0

例: 実行後、文字列の出力は厳密に同じである必要があります"hello world yo""hello   world  yo"

さらに、出力は次のようになりますString[]

String[0] == "hello"; String[1] == "world"; String[2] == "yo";

後者の効果的な単語を他の方法で処理できるようにします。

と考えてString.split(" ")いたのですが、単語間の空白が不確かで、例外が発生します..

4

5 に答える 5

3

使用できます

  String.split("\\s+") // one or more whitespace.

文字列の比較には使用==しないでください。代わりに使用してくださいString.equals()

コメントで質問を編集

表記は何といいますか?1 つ以上の "_" または "\n" がある場合はどうなりますか?

ご覧のとおり、 String#split() APIは正規表現をパラメーターとして受け入れます。は空白の\s簡略文字クラスですが+、 は前の項目を 1 回以上繰り返すために使用されます。

今、文字列を分割したい場合

  1. _すなわち。アンダースコア -->"this__is_test".split("[_]+");

  2. \nすなわち。改行 -->"this__is_test\n new line".split("\\r?\\n");

正規表現のチュートリアル

于 2013-04-25T18:13:48.183 に答える
1

で分割できます"\\s+"。これは、1 つ以上の空白文字で分割されます。

于 2013-04-25T18:14:07.387 に答える
0

String.split()正規表現を取るので、簡単に実行できますString.split(" +")

于 2013-04-25T18:13:29.463 に答える
0

分割関数は正規表現を取ると思いますが、そうでない場合は以下が機能します。

この正規表現は正しくないかもしれませんが、あなたがやろうとしていることの概念を示しています。

Pattern p = Pattern.compile("(.*?)  *(.*)");
Matcher m = p.matcher(s);
if (m.matches()) {
   String name = m.group(1);
   String value = m.groupo(2);
}

for (int i = 1; i<=m.groupCount(); i++) {
    System.out.println(m.group(i));
}
于 2013-04-25T18:16:22.287 に答える