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);
}
}
}