2012-05-01 16 views

答えて

3

Pattern p = Pattern.compile("#(\\w+)#"); 
String input = "#aaa# #bbb# #ccc# #ddd#"; 
Matcher m = p.matcher(input); 

List<String> parts = new ArrayList<String>(); 
while (m.find()) 
{ 
    parts.add(m.group(1)); 
} 

// parts is [aaa, bbb, ccc, ddd] 

http://ideone.com/i1IAZ

+0

ええ、その作品=)。正規表現で "w +"が意味することを私に説明してください。ありがとう=) – yvetterowe

+0

標準正規表現の構文です。 [私の答えにリンクされたJavaDocs](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html)を読んでください。それらが十分に明確でない場合は、http://regular-expressions.infoで知ることができます。 –

+0

hmm入力文字列を "#aaa##bbb bbb##ccc##ddd#"に変更すると、パーツは[aaa、null、ccc、ddd]になります。あなたは "bbb bbb"(部分文字列内の単語の間にスペースがある)というより一般的な方法を理解できますか?ありがとう= D – yvetterowe

2

はこれを試してみてください?!

:結果の配列内の各位置が空である最初のものを除いて、部分文字列を含んでいます
String str = "1aaa2 3bbb4 5ccc6 7ddd8"; 
String[] data = str.split("[\\d ]+"); 

regexを使用して
+2

...か何かを使用して、それを行うための別の方法です。 regexesに関する多くの質問と同様に、OPは彼/彼女の要件を明確に指定していません。 –

+0

申し訳ありません。私はちょうど私の質問を編集しています=) – yvetterowe

-1

ここではまだそのようなStringTokenizer

String str="#aaa# #bbb# #ccc# #ddd#"; 
    //# and space are the delimiters 
    StringTokenizer tokenizer = new StringTokenizer(str, "# "); 
    List<String> parts = new ArrayList<String>(); 
    while(tokenizer.hasMoreTokens()) 
     parts.add(tokenizer.nextToken()); 
+0

-1に変更してください。 _ "' StringTokenizer'は、互換性のために保持されているレガシークラスです。新しいコードでは使用しないでください。この機能を探している人は 'String'メソッドまたはjava.util.regexパッケージを使用することをお勧めします代わりに代わりに。 "_ http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html –

+0

ok。あなたの言ってる事がわかります。 Java 7(http://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html)から入手できますが、このクラスは将来のリリースでは使用できません。あなたのコメントの更新で私の答えを得ました:-) – coderplus

+0

あなたは正しいです:-) – coderplus

関連する問題