.net column

.NET開発者のためのブログメディア

Javaで文字列を切り出すには?substringメソッドの使い方を解説

2020年07月03日
SE
Javaで文字列を切り出すにはどうすればいいのですか?
PM
文字列抽出メソッドである「substring」を使えば切り出すことが出来ます。

Javaで文字列の一部を切り出すには?

Javaで文字列の一部を切り出したい場合、「substring」という文字列抽出メソッドを使用します。

このメソッドは、切り出したい部分文字列の、元の文字列中における開始位置と終了位置をIndexで指定して切り出しを行います。また、Indexの値が分からない場合でも、「indexOf」というメソッドを使用して取得することが可能です。

substringを使う方法

substringは、引数で指定された開始位置から終了位置までの文字列を切り出し、新たな文字列として返すメソッドです。例えば、””Hello World Java””という文字列から、””World””の部分を切り出すというような操作が可能です。

切り取る部分文字列の開始位置と終了位置は、Indexで指定します。Indexが不明の場合は、事前に切り取りたい位置のIndexを取得しておく必要があります。

文字列のIndexとは?

Indexとは、文字列の各文字に対して、0から順番に割り当てられた番号です。例えば、「hello」という文字列の場合、各文字のIndexは以下のようになります。

h e l l o
0 1 2 3 4

このIndexを使って、切り取る文字列の位置を指定します。

文字列のIndexを取得するには?

切り出したい文字列のIndex位置が特定できない場合は、indexOfメソッドを用いて、対象文字列のIndexを取得します。indexOfメソッドは、ある文字列内で、指定された部分文字列が最初に出現する位置のIndexを返すメソッドです。

例えば、””Hello World Java””の中の、””World””という文字列のIndexは「6」です。このIndexを取得する場合、ソースコードは以下のようになります。

public class Main {
public static void main(String[] args) {
String str = “”Hello World Java””;
int index = str.indexOf(“”World””);
System.out.println(index);
}
}

このようにして、””World””の開始Indexの値「6」を取得することが可能です。

開始位置を指定して切り出す方法

文字列のある位置以降を全て切り出したい場合は、substring(int beginIndex)メソッドを使用します。引数beginIndexに切り出しを開始したいIndexを指定することで、必要な部分を抽出できます。

例として、””Hello World Java””という文字列の””World””以降を切り出す方法は以下のようになります。””World””の開始Indexは「6」のため、beginIndexには「6」を指定します。

public class Main {
public static void main(String[] args) {
String str = “”Hello World Java””;
String result = str.substring(6);
System.out.println(result);
}
}

この処理により、””World””以降の部分文字列が切り出され、結果として””World Java””を取得することができます。

但し、注意すべき点として、substringメソッドは切り出した文字列を新しい文字列として返すメソッドであるため、元の文字列には影響を与えません。上記の例では、文字列strに格納されている文字列は””Hello World Java””のままであり、文字列resultに、切り出した新たな文字列””World Java””が格納されています。

開始・終了位置を指定して切り出す方法

文字列の特定の位置から別の特定の位置までを切り出したい場合は、substring(int beginIndex, int endIndex)メソッドを使用します。このメソッドでは、指定されたbeginIndexから、endIndexの手前までの範囲の部分文字列を切り出すことができます。

例として、””Hello World Java””という文字列の””World””部分のみを切り出す方法は、以下のようになります。””World””のbeginIndexには「6」を、endIndexは切り出したい最後の文字のIndex + 1となる「11」を指定します。

public class Main {
public static void main(String[] args) {
String str = “”Hello World Java””;
String result = str.substring(6, 11);
System.out.println(result);
}
}

上記処理により、切り出された文字列””World””のみを取得することが可能です。

indexOfとsubstringを組み合わせて使う方法

切り出したい文字列の開始位置と終了位置が特定できない場合、これまでの例を応用し、indexOfメソッドとsubstringメソッドを組み合わせて使用する必要があります。

indexOfメソッドとsubstringメソッドを使用して文字列””Hello World Java””から””World””を切り出す場合、次の例のようになります。

public class Main {
public static void main(String[] args) {
String str = “”Hello World Java””;
int beginIdx = str.indexOf(“”W””);
int endIdx = str.indexOf(“”d””);
String result = str.substring(beginIdx, endIdx + 1);
System.out.println(result);
}
}

まずindexOfメソッドを使って””World””の先頭文字””W””に該当するIndexと、末尾の文字””d””に該当するIndexを取得します。そして、取得した値を用いて、substringメソッドで対象の文字列””World””を切り出しています。

注意点として、末尾の文字””d””に該当するIndexをそのまま使うと、切り出せる文字は””Worl””となってしまいます。endIndexには、「対象文字のIndex + 1」の値を指定しなければならない点に気をつけてください。

文字列の末尾から切り出す方法

substringメソッドでは、文字列の先頭から数えて部分文字列を切り出すだけでなく、末尾から切り出すことも可能です。末尾から数えて切り出す場合は、元の文字列の長さから、切り出したい文字列の長さを引いた値をsubstringメソッドのbeginIndexに指定します。

例えば、””Hello World Java””という文字列の末尾から4文字分、””Java””という部分文字列を切り出したい場合、以下のようになります。

public class Main {
public static void main(String[] args) {
String str = “”Hello World Java””;
int strLength = str.length(); //元の文字列の長さ
int cutLength = 4; //切り出したい文字列の長さ
String result = str.substring(strLength – cutLength);
System.out.println(result);
}
}

上記で使用しているlengthメソッドは、対象文字列の長さをint型で返すメソッドです。このように、文字列の末尾からでも、取得したい文字数分だけ文字列を切り出すことが可能です。

SE
切り出し方法は、さまざまな方法があるのですね。
PM
これらを使いこなすことで、簡単に文字列の切り出しをすることが出来ます。

実際にJavaの文字列から切り出してみよう

上記のようにsubstringメソッドを使用することで、ある文字列から抽出したい部分文字列だけを切り出すことが可能です。

また、切り出したい文字列が元の文字列のどこに位置するか不明な場合でも、indexOfメソッドとsubstringメソッドを組み合わせることによって、対象の部分文字列を切り出すことができます。

それぞれおの目的に応じた方法を理解し、実践してみましょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)