String text="2|919505485043|2013-08-08 12:57:50|2013-08-08 12:58:04|2013-08-08 12:58:08|ANSWER";
を使用して文字列を分割したい|
.Iはjava.Whenで上記の文字列を持っています
System.out.println(text.split("|").length);
結果は 82 です。ここで間違っている可能性があります。
String#splitは、引数として正規表現を使用します。パイプ文字|
には特別な意味 (OR を意味する) があり、文字列がリテラルごとに内部で分割されるのを防ぎ|
ます。
エスケープする必要があります
text.split("\\|").length
それ以外の場合は、長さを決定するときに完全String
が使用されます
String.split(String)
正規表現を使用し、正規表現|
内で特別な意味を持ちます。
オプション:
|
手動でエスケープします。text.split("\\|")
|
ます。text.split(Pattern.quote("|"))
Splitter
クラスを使用して、正規表現をまったく使用しないようにします個人的には、後者のアプローチを採用します。これは実際には、String.split
正規表現をまったく使用する設計上の欠陥であり、コードの呼び出しが不明確であると思います。
本当にを使用したい場合は、コードを読んでいる人に、なぜそれをエスケープしているのかを明確にするためにString.split
必ず使用します.Pattern.quote
"\\|"
エスケープ文字を忘れた、
text.split("\\\|");
\\
あなたはこれを忘れたはずです。
text.split("\\|")
public class Sstring {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String text="2|919505485043|2013-08-08 12:57:50|2013-08-08 12:58:04 |2013-08-08 12:58:08|ANSWER";
System.out.println(text.split("\\|").length);
String str[] = text.split("\\|");
for(String i:str){
System.out.println(i);
}
}
}