Java で文字列を分割する方法
このチュートリアルでは、Java で文字列を分割する方法について説明します。
Java の String
は、非プリミティブなデータ型の一つで、文字列を格納するために使用されます。文字列変数は以下のように簡単に宣言することができます。
String string = "I am a string";
String string1 = "I am another string";
何を実現しようとしているかによっては、いくつかの文字列処理を行う必要があるかもしれません。ここでは、カンマで区切られた CSV 形式のデータを表す文字列がある場合を考えてみましょう。
String data = "Apple,Banana,Orange,Peach";
そのため、次のような出力を得るために、カンマに基づいて文字列を分割してデータを分離する必要があります。
> Apple
> Banana
> Orange
> Peach
Java Strings にはデフォルトでスプリット関数 String#split()
があり、これは入力として正規表現を受け取り、与えられた入力に対してスプリットした後、結果として得られる文字列の配列を返します。
以下の例は、このメソッドを使って Java で与えられた文字列を分割する方法を示しています。
public class Main {
public static void main(String args[]) {
String data = "Apple,Banana,Orange,Peach";
String[] splitted = data.split(",");
for (int i = 0; i < splitted.length; i++) {
System.out.println(splitted[i]);
}
}
}
上記のコードは以下のように出力しています。
Apple
Banana
Orange
Peach
このメソッドを使って、別のパラメータで文字列を分割する方法を試してみましょう。
ドットで分割
今回はこんな感じの文字列です。"One.Two.Three.Four"
です。これをもう一度同じ方法で分割してみましょう。
public class Main {
public static void main(String args[]) {
String data = "One.Two.Three.Four";
String[] splitted = data.split(".");
for (int i = 0; i < splitted.length; i++) {
System.out.println(splitted[i]);
}
}
}
上のコードでは何も出力されません。このとき、split
関数は 正規表現
のパターンを入力として受け取ることを覚えておいてほしい。そのため、特殊な文字で分割したい場合には特別な対策が必要です。
ありには 12 個の特殊な意味を持つ文字があります。
- バックスラッシュ
\
- キャレット
^
- ドル記号
$
- ピリオドまたはドット
.
- 垂直バーまたはパイプ記号
|
- 疑問符
?
- アスタリスクまたはスター
*
- プラス記号
+
- 左括弧
(
- 閉じ括弧
)
- 左角括弧
[
- 開始中括弧
{
これらの特殊文字はしばしばメタキャラクタ
と呼ばれます。
上記のいずれかの文字で文字列を分割したい場合は、バックスラッシュ \
を使用して特殊文字をエスケープすることができます。
public class Main {
public static void main(String args[]) {
String data = "One.Two.Three.Four";
String[] splitted = data.split("\\.");
for (int i = 0; i < splitted.length; i++) {
System.out.println(splitted[i]);
}
}
}
これで正しく出力されるようになりました。
One
Two
Three
Four
もう一例を試してみましょう。
文字列で分割
今回は、"OneFruitTwoFruitThreeFruit"
のような文字列があります。同じメソッドをもう一度使用して、文字列 Fruit
に基づいて分割します。
public class Main {
public static void main(String args[]) {
String data = "OneFruitTwoFruitThreeFruit";
String[] splitted = data.split("Fruit");
for (int i = 0; i < splitted.length; i++) {
System.out.println(splitted[i]);
}
}
}
上のコードの出力は次のようになります。
One
Two
Three
これで、Java で文字列を任意のパラメータで分割する方法がわかりました。