2013-05-01 20 views
5

私はJavaを使っていくつかのデータを解析しようとしていますが、これは '|'で区切られています。シーケンス。以下はデータの例です。Java文字列 "|"で分割

String s = "111206|00:00:00|2|64104|58041"; 
String [] temp = s.split("|"); 
for(String p: temp) 
System.out.println(p); 

しかし、 '|'で分割する代わりに、それはすべての文字を別々に分ける。上記のコードの出力は次のとおりです。

1 
1 
1 
2 
0 
6 
| 
0 
0 
: 
0 
0 
: 
0 
0 
| 
2 
| 
6 
4 
1 
0 
4 
| 
5 
8 
0 
4 
1 

「|」を置き換えてターンアラウンドしました。行の中で '、'と表示されますが、コードのパッチは何度も実行され、最適化したいと考えています。

String s = "111206|00:00:00|2|64104|58041"; 
s = s.replace('|', ','); 

私は、問題が「|」であることを知りたいだけです。 ??

答えて

11

あなたは使用する必要があります。

String [] temp = s.split("\\|"); 

split方法は、正規表現をとり、|は、特殊文字の一つであるためです。それは 'または'を意味します。つまり、あなたは'' or ''で分割しています。これはちょうど''です。したがって、すべての文字の間で分割されます。

\は、文字列内のJavaのエスケープ文字であるため、最初のものは、文字列の実際の\をエスケープするためのものですので、あなたは、2つのスラッシュが必要です。 Javaは "\|"のような文字列を認識し、正規表現は "|"のように解釈します。

+1

最も簡単な回答ポイントがエバールです! – jahroy

+0

@ジャーロイ[FGITW](http://meta.stackexchange.com/questions/9731/fastest-gun-in-the-west-problem):) – Doorknob

+0

完璧で、素敵で簡単な方法です。 –