を私はあなたが間違って行ってきた場所がわからないんだけど、アラン・ムーアの役に立つ提案への返信で、あなたが最初の単語だけに一致することができると言いました。好ましくは、あなたのクラスの最上部付近private static final
として -
パフォーマンスを実現するため
Matched "o_9".
Matched "o_8".
Matched "x_7".
Matched "o_6".
Matched "o_5".
、パターンを一度にコンパイルする必要があります。
String s = "o_9,o_8,x_7,o_6,o_5";
Pattern p = Pattern.compile("\\w+");
Matcher m = p.matcher(s);
while (m.find()) {
String matchedWord = m.group();
System.out.println("Matched \"" + matchedWord + "\".");
}
出力:次のコードは、それがすべての単語と一致していることを示しています。本当に必要な場合以外は、文字列の配列を作成しないでください(String.split()
)。
'String.split'を使用する際に何が問題になりますか?正規表現は、任意の長さのパターンを扱うのが良くありません。あなたはいつも5つのCSVで区切られた項目を持っているのですか、あるいは項目の数が変わる可能性がありますか? –
適切な正規表現は '/ [^ \、] + /'となります。しかし、@ TimBiegeleisen –
しかし、['String.split(String)'](https://docs.oracle.com/javase/8/docs/api/java/lang/String)のように、String.splitのアプローチを好むでしょう。 html#split-java.lang.String-)は*正規表現*をとります。 –