String.split usa Regular Expressions, tampoco necesita asignar una matriz extra para su división.
El método de división le dará una lista., el problema es que intenta predefinir cuántas veces tiene una pestaña, pero ¿cómo lo sabría realmente? Intente utilizar Scanner o StringTokenizer y aprenda cómo funcionan las cuerdas de división.
Déjeme explicar Why \ t does not y por qué necesita \\\\
para escapar \\
.
Bien, entonces cuando usas Split, en realidad toma una expresión regular (expresión regular) y en la expresión regular quieres definir qué carácter dividir, y si escribes \ t eso en realidad no significa \t
y qué QUIERES dividir por es \t
, ¿verdad? Entonces, simplemente escribiendo \t
le dice a su procesador de expresiones regulares que "hey dividido por el carácter que se escapó t" NO "Oye, dividido por todos los caracteres que se parecen a \t
". Observe la diferencia? Usar \ significa escapar de algo. Y \
en expresiones regulares significa algo totalmente diferente de lo que piensas.
Así que esta es la razón por lo que necesita para utilizar este Solución:
\\t
para decirle al procesador de expresiones regulares para buscar \ t. De acuerdo, ¿por qué necesitarías dos de ellos? Bueno, el primero \ escapa del segundo, lo que significa que se verá así: \ t cuando esté procesando el texto.
Ahora vamos a decir que usted está buscando para dividir \
Bueno, entonces se quedaría con \\ pero a ver, que no funciona! porque \ intentará escapar del char anterior! Es por eso que quiere que la salida sea \\ y, por lo tanto, debe tener \\\\.
Espero que los ejemplos anteriores te ayuden a entender por qué tu solución no funciona y cómo conquistar otras.
Ahora, ya te he dado este answer, quizás deberías empezar a buscarlos ahora.
OTROS MÉTODOS
StringTokenizer
Usted debe mirar en el StringTokenizer, es una herramienta muy útil para este tipo de trabajo.
Ejemplo
StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
Esta es la salida
this
is
a
test
utiliza el segundo Constructor para StringTokenizer para establecer el delimitador:
StringTokenizer(String str, String delim)
escáner
También es posible usar un Scanner como uno de los comentaristas dijo que esto podría ser algo como esto
Ejemplo
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
La salida sería
1
2
red
blue
Lo que significa que cortará la palabra "pez" y le dará el resto, usando "pez" como el delimitador.
examples taken from the Java API
Así 'campo1 \ tfield2 \ t \ tfield4' da que campo1, campo2, campo4 en lugar de campo1, campo2, [nulo], campo4? –
http://stackoverflow.com/questions/1630092/token-parsing-in-java/1630110 ¿duplicado? Esto es lo que sucede cuando NO entiendes las respuestas y solo copias el código. –
No necesita asignar una nueva matriz de cadenas. 'String.split' asigna uno nuevo de todos modos. – Joey