Tengo una cadena en Java definida a continuación:

String numbers = null;
for (int i= 0; i < contactNumberList.size();i++)
{
    numbers = contactNumberList.get(i) + "\n" + numbers;
}

Donde contactNumberList contiene cuatro elementos como: 9891, 3432, 5432, 9890. Entonces, después del ciclo, tengo cadena de números como: 9890 \ n5432 \ n3432 \ n9891 \ nnull

Luego pasé la cadena anterior a través de las siguientes API.

String toUnicodeEncoded = StringEscapeUtils.escapeJava(numbers);
toUnicodeEncoded = StringEscapeUtils.escapeXml10(toUnicodeEncoded);

Ahora, cuando intento imprimir la cadena a Unicode Encoded carácter por carácter, como se muestra a continuación:

for (int i =0;i<toUnicodeEncoded.length();i++)
{
   Logger.log("chat at  "+i + " = "+(toUnicodeEncoded.charAt(i)));
}

Da :

char at 0 = 9
char at 1 = 8
char at 2 = 9
char at 3 = 0
char at 4 = \
char at 5 = n

Y así .

Mi punto es "\ n" se convirtió en dos caracteres \ yn. Ahora quería dividir la cadena en UnicodeEncoded en función de "\ n" usando las siguientes API:

String lines[] = toUnicodeEncoded.split("\\n");

Pero no puede dividirlo porque ahora "\ n" se ha convertido en \ and n. ¿Cómo puedo dividirme en una cadena codificada Unicode por "\ n" o un nuevo carácter de línea?

Básicamente quiero la salida como:

9890
5432
3432
9891
null

Es decir, los cuatro números. Cómo lo hago.

0
Pardeep Kr 23 dic. 2016 a las 17:17

3 respuestas

La mejor respuesta

Gracias a todos por responder. Pero lo conseguí trabajando usando el siguiente enfoque:

String pattern = Pattern.quote("\\" + "n");
String lines[] = toUnicodeEncoded.split(pattern);
1
Pardeep Kr 23 dic. 2016 a las 14:30

Cuando dividimos su cadena con \ n está dando la salida esperada. Pero es mejor usar System.getProperty("line.separator") en lugar de \n

String s="9890\n5432\n3432\n9891\nnull";
s = StringEscapeUtils.escapeJava(s);
s= StringEscapeUtils.escapeXml10(s);

for (String number:s.split("\n")) {
    System.out.println(number);
}

resultado

9890
5432
3432
9891
null
2
Rajashekhar 23 dic. 2016 a las 14:40

Usa esto, debería hacer el truco

String.split("[\\r\\n]+")
1
Ran Koretzki 23 dic. 2016 a las 14:24