2016-12-23 9 views
0

私はJavaで文字列は以下のように定義されている:はどのように改行文字に基づいて、Javaの文字列を分割する

contactNumberListのように4つの項目が含まれてい
String numbers = null; 
for (int i= 0; i < contactNumberList.size();i++) 
{ 
    numbers = contactNumberList.get(i) + "\n" + numbers; 
} 

:ループの後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」は2文字\とnになりました。 は、今私は、文字列が「\ n」は以下のAPIを使用することに基づいてをtoUnicodeEncoded分割したい:

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

しかし、今は「\ n」はなってきたので、それを分割し、そのことはできません\ nは。どのように私は "\ n"または改行文字でUnicodeEncoded文字列に分割しますか?

基本的に私はのような出力をしたい:

9890 
5432 
3432 
9891 
null 

すなわち、すべての4つの数字。どうすればいいのですか。我々は\ nはそれが予想される出力を与えているとあなたの文字列を分割すると

答えて

1

感謝をSystem.getProperty("line.separator")を使用することをお勧めします。しかし、私はそれは、次のアプローチを使用して作業しました:

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

これが原因で、あなたの元の試み 'toUnicodeEncoded.split(「\\ N」)である;' *正規表現*( '文字列のJavadocを読むにバックスラッシュを渡しました。 .split')、正規表現はバックスラッシュを特別な意味で扱います。あなたがしなければならなかったことは正規表現にエスケープされたバックスラッシュを与えることでした: 'toUnicodeEncoded.split(" \\\\ n ");'。 –

0

使用これを、トリック

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

を行う必要があります。しかし、皆の返信のために代わり\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 
関連する問題