こんにちは、さるまりんです。
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";
上の文字列ではjumps
とover
の間は全角スペースです。
\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, ":");
同じことをするのにいろんな方法があります。どれが良いかは場面で変わってくると思ういます。いろんな方法を知っていると幅が広がってくれるかな。
読んでくださってありがとうございました。
それではまた!