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