4

文字列をすべてのスペースで文字列の配列に分割しようとしています。

例えば:

This_sentence_gets__split.(アンダースコアはここではスペースを表します)

になる

"This"

"sentence"

"gets"

" "(ダブルスペースは1つのスペースとして残されていることに注意してください)

"split."

私はこれができると思いますがString.split(String regex)、正規表現があまり得意ではなく、これをどのように達成するかわかりません。

編集:

最初のスペースの後のスペースもサブストリングに分割する必要があります。例: Split___this.になります"Split " " " " "this."

4

4 に答える 4

7

これはあなたが探しているものかもしれないと思います(\\sタブや新しい行などのすべての空白のクラスで改善できます)

String data = "This_sentence__gets___split".replace('_', ' ');
// System.out.println(data);
String arr[] = data.split("(?<! ) |(?<= {2})");
for (String s : arr)
    System.out.println("\"" + s + "\"");

出力:

"This"
"sentence"
" "
"gets"
" "
" "
"split."

説明:

  • "(?<! ) "前にスペースがないスペースでのみ分割されます
  • "(?<= {2})"その前に2つのスペースがある場所で分割されます。
于 2013-01-17T19:39:45.520 に答える
1

試してみてくださいStringTokenizer

 StringTokenizer st = new StringTokenizer("this is a test", " ", true);
 while (st.hasMoreTokens()) {
     System.out.println(st.nextToken());
 }

アップデート:

3番目のパラメーター(true)は、区切り文字を個別のトークンとして扱い、個別に返されるようにします。

于 2013-01-17T19:43:08.713 に答える
0

私も正規表現に精通していないので、GoogleGuavaのSplitterクラスを使用することにしました。

例:

private static final Splitter splitter = 
      Splitter.on(',').trimResults().omitEmptyStrings();

//results in {"some", "string"}
splitter.split("some string");

TrimResults()、omitEmptyStrings()、およびその他のオプションを試して、好きなように調整できます。

:)

于 2013-01-17T19:47:25.560 に答える
0

それほど難しいことではありません。

str.split(" ");
于 2013-01-17T19:16:37.597 に答える