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

- システム
エンジニア - Javaで文字列を切り出すにはどうすればいいのですか?
- プロジェクト
マネージャー - 文字列抽出メソッドである「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型で返すメソッドです。このように、文字列の末尾からでも、取得したい文字数分だけ文字列を切り出すことが可能です。
- システム
エンジニア - 切り出し方法は、さまざまな方法があるのですね。
- プロジェクト
マネージャー - これらを使いこなすことで、簡単に文字列の切り出しをすることが出来ます。
実際にJavaの文字列から切り出してみよう
上記のようにsubstringメソッドを使用することで、ある文字列から抽出したい部分文字列だけを切り出すことが可能です。
また、切り出したい文字列が元の文字列のどこに位置するか不明な場合でも、indexOfメソッドとsubstringメソッドを組み合わせることによって、対象の部分文字列を切り出すことができます。
それぞれおの目的に応じた方法を理解し、実践してみましょう。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Java新着案件New Job
-
設計情報のビューアシステムマイグレーション/東京都品川区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】
月給41万~43万円東京都品川区(大崎駅) -
設計情報のビューアシステムマイグレーション/東京都品川区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】
月給29万~31万円東京都品川区(大崎駅) -
大手製造会社販売物流システム再構築<アプリ設計>/神奈川県茅ヶ崎市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】
月給41万~50万円神奈川県茅ヶ崎市(-駅) -
大手製造会社販売物流システム再構築<アプリ設計>/神奈川県茅ヶ崎市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】
月給29万~34万円神奈川県茅ヶ崎市(-駅) -
医療向けWebアプリケーションのカスタマイズ対応/東京都品川区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】
月給48万~50万円東京都品川区(大崎駅) -
医療向けWebアプリケーションのカスタマイズ対応/東京都品川区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】
月給32万~34万円東京都品川区(大崎駅)