son - separar una palabra en letras java
Dividir una Cadena de Java por el sÃmbolo de pipa usando split("|") (6)
La documentación oficial de Java establece:
La cadena "boo:and:foo"
, por ejemplo, produce los siguientes resultados con estas expresiones Resultado de Regex:
{ "boo", "and", "foo" }"
Y esa es la forma en que necesito que funcione. Sin embargo, si ejecuto esto:
public static void main(String[] args){
String test = "A|B|C||D";
String[] result = test.split("|");
for(String s : result){
System.out.println(">"+s+"<");
}
}
imprime:
><
>A<
>|<
>B<
>|<
>C<
>|<
>|<
>D<
Que está lejos de lo que esperaría:
>A<
>B<
>C<
><
>D<
¿Por qué está pasando esto?
Necesitas
test.split("//|");
split
usa expresión regular y en regex |
es un metacarácter que representa el operador OR
. Debe escapar de ese carácter usando /
(escrito en String como "//"
ya que /
también es un metacarácter en los literales de Cadena y requiere otro /
para escapar de él).
También puedes usar
test.split(Pattern.quote("|"));
y deje que Pattern.quote
cree la versión escapada de la expresión regular que representa |
.
También puede usar .split("[|]")
.
(Utilicé esto en lugar de .split("//|")
, que no funcionó para mí.)
También puede usar la biblioteca apache y hacer esto:
StringUtils.split(test, "|");
Usa este código:
public static void main(String[] args) {
String test = "A|B|C||D";
String[] result = test.split("//|");
for (String s : result) {
System.out.println(">" + s + "<");
}
}
Use escape apropiado: string.split("//|")
O el asistente Pattern.quote()
que se ha creado para este propósito:
string.split(Pattern.quote("|"))
que funciona con cadenas de entrada arbitrarias. Muy útil cuando necesita citar / escapar de la entrada del usuario.
el método split () toma una expresión regular como argumento