Bhves:
Tengo un flujo de entrada que cuenta con campos separados por tabulador (\ t) que tiene este aspecto
String str = " acc123\tdpId123\t2011-01-01\t2022-01-01\[email protected]\tIN\t1233\tSOMETHING ";
que funciona muy bien cuando lo hago str = str.trim();
y
strArray = str.split("\t", -1);
strArray=["acc123","dpId123","2011-01-01","2022-01-01","[email protected]","IN","1233","SOMETHING"] will give size as 8
Pero último campo en el registro de entrada no es obligatoria y puede ser omitida.
Por lo que la entrada puede tener este aspecto también.
String str1 = "acc123\tdpId123\t2011-01-01\t2022-01-01\[email protected]\tIN\t1233\t";
pero en este caso último campo debe estar vacío pero cuando se utiliza esta cadena después del ajuste y dividido mi tamaño es 7
str1 = str1.trim();
strArray = str1.split("\t", -1);
strArray=["acc123","dpId123","2011-01-01","2022-01-01","[email protected]","IN","1233"]will give size as 7
Pero yo quiero
strArray=["acc123","dpId123","2011-01-01","2022-01-01","[email protected]","IN","1233",""]
¿Cómo puedo evitar esta situación?
Mushif Ali Nawaz:
Hay que ir:
String str1 = " acc123\tdpId 123\t201 1-01-01\t2022-01-01\[email protected]\tIN\t1233\t";
str1 = str1.replaceAll("^[ ]+", ""); // removing leading spaces
str1 = str1.replaceAll("[ ]+$", ""); // removing trailing spaces
String[] split = str1.split("\t", -1);
System.out.println(Arrays.toString(split));
System.out.println(split.length);
Cadena # ajuste método también elimina \t
. Para manejar eso he quitado sólo los espacios iniciales y finales utilizando expresiones regulares.
Salida:
[acc123, dpId 123, 201 1-01-01, 2022-01-01, [email protected], IN, 1233, ]
8