Stringクラスには様々なメソッドがあるが、文字列の中の一部を切り出すこともできる。
このページではJavaで文字列の一部を切り出すために使えるsubstringについてご紹介しよう。
目次
文字列の一部を切り出しする(substring)
substringメソッドの基本的な使い方
substringは文字列の一部を取得するためのメソッドだ。使い方も簡単だ。
文字列.substring( int biginIndex)
biginIndex → 開始インデックス(この位置にある文字は含まれる)
戻り値の型 |
String |
内容 |
この文字列の部分文字列である新しい文字列を返する。 |
substring(int biginIndex)は、文字列からbiginIndexで指定された位置にある文字から最後までを切り取り、新しい文字列として返すメソッドだ。
サンプルコード
1 2 3 4 5 6 7 8 |
public class StringSample6 { public static void main(String[] args) { String message ; //[1] message = "おはようございます。気持ちのいい朝です。";//[2] String result = message.substring(4);//[3] System.out.println("取得したのは「" + result + "」です。" ); //[4] } } |
実行結果
1 |
取得したのは「ございます。気持ちのいい朝です。」です。 |
サンプルコードの説明
下記がサンプルコードの内容だ。
- [1] String型の変数messageの宣言
- [2] 変数messageの初期化.し、文字を代入。
- [3] substringを使用して変数messageの4文字目から最後までを取得し、変数resultへ代入。(※)
- [4] 変数resultを出力。
4文字目は0文字から始まっているので「おはようございます。気持ちのいい朝です。」の「う」ではなく、「ご」になる。
普通、数字を数えるときは1,2,3と数えるが、Java言語では0から始まり0,1,2,3…となる。
「何文字目」という切り出す始まりの文字位置の考え方は間違えやすいので注意してほしい。この何文字目ということを「インデックス」と表現する。
substringで間を取得する方法
「○文字目から最後」という設定だけではなく、「○文字目から○文字目」という取得もできる。使い方は次の通りだ。
文字列.substring( int biginIndex,int endIndex)
- biginIndex → 開始インデックス(この位置にある文字は含まれる)
- endIndex → 終了インデックス(この位置にある文字は含まれない)
戻り値の型 |
String |
内容 |
この文字列の部分文字列である新しい文字列を返す。 |
substring(int biginIndex, int endIndex)は、文字列からbiginIndexで指定された位置にある文字からendIndexまでの文字を切り取り、新しい文字列として返すメソッドだ。
ここでの注意する点は、endIndexで指定されたインデックスの文字は含まれないということだ。
「あいうえお」という文字列を「いう」という形で取り出したいと思う場合
「あいうえお」のインデックスは
あ → インデックス0
い → インデックス1
う → インデックス2
え → インデックス3
お → インデックス4
となる。
substring(1,3)は
biginIndex → 1
endIndex → 3
ということで、「いう」という新しい文字列が取得できる。
サンプルコード
1 2 3 4 5 6 7 8 |
public class StringSample7 { public static void main(String[] args) { String message ; //[1] message = "おはようございます。気持ちのいい朝です。";//[2] String result = message.substring(0,4);//[3] System.out.println("取得したのは「" + result + "」です。" ); //[4] } } |
実行結果
1 |
取得したのは「おはよう」です。 |
サンプルコードの説明
- [1] String型の変数messageの宣言
- [2] 変数messageの初期化.。文字列の代入。
- [3] substringを使用して変数messageの0番目である「お」から4番目のひとつ前の「う」までを取得し、変数resultへ代入。
- [4] 変数resultを出力。
substringで文字列の体裁を整える
substringメソッドは文字列から必要な部分を取り出して文字列の体裁を整える場合に使用されることも多い。
たとえば、「20160101」などの形式で入力されている文字列の体裁を年月日に変更する場合は以下のサンプルコードのようになる。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 |
public class StringSample61 { public static void main(String[] args) { String date ; //[1] date = "20160101";//[2] String year = date.substring(0,4);//[3] String month = date.substring(4,6);//[4] String day = date.substring(6);//[5] System.out.println("もとの文字列:" + date); System.out.println("日付は" + year + "年" + month + "月" + day + "日です。"); //[6] } } |
実行結果
1 2 |
もとの文字列:20160101 日付は2016年01月01日です。 |
サンプルコードの説明
- [1] String型の変数dateの宣言
- [2] 変数dateの初期化.。文字列「20160101」の代入。
- [3] substringを使用して変数dateの0番目である「2」から4番目のひとつ前の「6」までを取得し、変数yearへ代入。
- [4] substringを使用して変数dateの4番目である「0」から6番目のひとつ前の「1」までを取得し、変数monthへ代入。
- [5] substringを使用して変数dateの6番目である「0」最後までを取得し、変数dayへ代入。
- [6] それぞれ変換した新しい文字列を組み合わせて年月日形式にした値を出力。
Stringに代入した文字列は変えることができないので、substringを使用して取り出した文字列を再度利用したい場合は、新しい文字列に代入して値を保持する必要がある。
まとめ
このページではJavaで一部の文字を切り出すsubstringメソッドについてお伝えした。
色々な場面で使う機会があるメソッドなので、細かい使い方はともかくとして、メソッド名だけは覚えておこう。