2012-04-13 15 views
0

私は、次のような文字列を分割する方法を考え出す困難な時間を過ごしています:のJava:複数の要素に文字列を分割

String str = "hi=bye,hello,goodbye,pickle,noodle 

この文字列は、テキストファイルから読み込まれたと私は文字列を分割する必要がありますカンマの間の各要素に入力します。だから、テキストファイルの内容に関係なく、各要素をそれぞれの文字列に分割する必要があります。各要素は任意の長さであり、「hi」が等しい任意の量の要素が存在する可能性があることに留意してください。何か案は?ありがとう!

答えて

5

スプリット!

String[] set=str.split(","); 

あなたはセットから必要があるとして、その後、各文字列にアクセスするには、[...](あなたが第三の文字列をしたいと言うことができます、あなたが言う:セット[2])。

テストとして、あなたはそれらすべてをプリントアウトすることができます:私は思ったんだけど

for(int i=0; i<set.length;i++){ 
    System.out.println(set[i]); 
} 
+0

または[Arrays.toString(set)]を[テスト用] – amit

+1

を使用すると、正規表現を使用することができるため、Splitは素晴らしいです。 str.split( "、\\ s *") このコードでは、ソース文字列(str)を各カンマで区切り、ゼロ個以上のスペース(*)を分割します。 –

+1

ありがとうございました!私は前にこの方法について聞いたことがないと信じられない...ありがとう! – MrDrProfessorTyler

0

を:あなたはそのように分割する意味ですか:

"hi=bye" 
"hi=hello" 
"hi=goodbye" 
"hi=pickle" 
"hi=noodle" 

ため、単純なスプリット(」、 ")はこれをしません。あなたの与えられた文字列に "hi ="を付ける目的は何ですか?おそらく

、あなたは、HI =文字列の先頭から切る代わりにこれを行うには意味場合:

String input = "hi=bye,hello,goodbye,pickle,noodle"; 
String hi[] = input.split(","); 
hi[0] = (hi[0].split("="))[1]; 
for (String item : hi) { 
    System.out.println(item); 
} 
+0

はい、私は、私は彼/彼女が探しているもの、私はそれまでは分裂が冒頭にハイを取得するために使用することができませんでしたと確信していると組み合わせ文字列はそこから把握する比較的簡単にする必要があります。いずれにしても、文字列を分割するのは難しいようでした。すべてに「hi =」を適用するのではなく、 –

1

あなたは、もう少し高度なアプローチが必要な場合は、私はグアバのSplitterクラスをお勧め:

Iterable<String> split = Splitter.on(',') 
           .omitEmptyStrings() 
           .trimResults() 
           .split(" bye,hello,goodbye,, , pickle, noodle "); 

これは、先頭または末尾の空白を取り除き、空白の一致を省略します。クラスには、Stringをキーと値のペアに分割するなど、よりクールなものがいくつかあります。

1
str = str.subString(indexOf('=')+1); // remove "hi=" part 
String[] set=str.split(","); 
+0

コードが修正されました。 – sarwar026