una son separar por parte palabra manejo los letras extraer ejercicios delimitadores cuales comas caracter cadenas cadena array java regex string

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