Java:スペースで文字列を分割する

こんにちは、さるまりんです。

Javaによる文字列分割です。

次の文字列をスペースで分割したいと思います。

String text = "the quick brown fox jumps over the lazy dog";

まずはsplitメソッドを使ってやってみます。

String[] array = text.split(" ");

splitメソッドには区切り文字の半角スペース" "を指定しています。

以下のコードで出力

for (String s : array) {
    System.out.println(s);
}

結果はこんな感じになります。

the
quick
brown
fox
jumps
over
the
lazy
dog

単語に分割されて一行ずつ表示さています。

splitメソッドには区切り指定に正規表現を使えます。

空白文字を表す正規表現\sで指定してみます。

String[] array = text.split("\\s+");

これで上と同様に分割したものを表示すると

the
quick
brown
fox
jumps
over
the
lazy
dog

\sは半角の空白文字(半角スペース、タブ、改行、改ページ)に一致するので、全角スペースにはききません。

String text = "the quick brown fox jumps over the lazy dog";

上の文字列ではjumpsoverの間は全角スペースです。

\s+で分割すると

the
quick
brown
fox
jumps over
the
lazy
dog

となり、全角スペースのところでは分割されていません。

全角スペースも分割の対象とするには

String[] array = text.split("\\s| +");

です。こうすると

the
quick
brown
fox
jumps
over
the
lazy
dog

と全角スペースの箇所も分割されています。

今度はStringTokenizerクラスを使ってやってみます。

以下がサンプルコードです。

String text = "the quick brown fox jumps over the lazy dog";
StringTokenizer st = new StringTokenizer(text, " ");
while(st.hasMoreTokens()) {
    System.out.println(st.nextToken());
}

StringTokenzerのコンストラクタに文字列textと区切り文字” “を渡しています。

その後、whileループで分割された文字列がある限りそれを出力しています。

以前は文字列を分割するといえばこれだったのですが、最近はあまりこのコードは書いていないような気がしています。

Apache CommonsのStringUtilsにも文字列分割に便利なメソッドがあります。

splitメソッドです。

String[] array = StringUtils.split(text);

splitメソッドは空白文字を区切りとして分割してくれるので、上の例と同様に以下のように分割されます。

the
quick
brown
fox
jumps
over
the
lazy
dog

別の区切り文字を使いたい場合はsplitメソッドの第二引数で指定することができます。

String[] array = StringUtils.split(text, ":");

同じことをするのにいろんな方法があります。どれが良いかは場面で変わってくると思ういます。いろんな方法を知っていると幅が広がってくれるかな。

読んでくださってありがとうございました。

それではまた!