如何基于换行符分割java字符串

时间:2016-12-23 14:17:52

标签: java string split

我在java中定义了一个字符串,如下所示:

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

其中contactNumberList包含四个项目:9891,3432,5432,9890。 所以在循环之后我有数字字符串: 的 9890 \ n5432 \ n3432 \ n9891 \ nnull

然后我通过以下API传递了上述字符串。

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

现在,当我尝试按字符打印字符串toUnicodeEncoded时,如下所示:

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

它给出了:

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

等等。

我的观点是“\ n”成了两个字符\和n。     现在我想使用以下API基于“\ n”将字符串拆分为Unicode编码

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

但它无法拆分,因为现在“\ n”已成为\和n。如何通过“\ n”或新行字符拆分到Unicode的编码字符串。

BAsically我希望输出为:

9890
5432
3432
9891
null

即所有四个数字。我该怎么做。

3 个答案:

答案 0 :(得分:2)

当我们用\ n分割你的字符串时,它会给出预期的输出。但最好使用System.getProperty("line.separator")代替\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);
}

<强>结果

9890
5432
3432
9891
null

答案 1 :(得分:1)

使用它,应该做的伎俩

String.split("[\\r\\n]+")

答案 2 :(得分:1)

感谢大家的回复。但我使用以下方法使其工作:

String pattern = Pattern.quote("\\" + "n");
String lines[] = toUnicodeEncoded.split(pattern);