こんにちは!フリーランスのオータケです。
Java言語で文字列の一部を抽出したい場合、substringを使うかと思います。この記事では、substringについて
- substringの使い方
- 開始位置を指定して文字を切り出す
- 開始、終了位置を指定して文字を切り出す
という基本的な内容から、右から(後ろから)切り出す方法や一文字だけを切り出す方法などの応用的な使い方に関しても解説していきます。今回はsubstringについて、わかりやすく解説します!
なお、Javaの記事については、こちらにまとめています。
substringの使い方
substringは以下のように記述して使用します。
substring(int beginIndex, int endIndex)
substringは部分文字列を返します。部分文字列はbeginIndexから始まり、endIndex – 1にある文字までが範囲です。ですので、部分文字列の長さはendIndex-beginIndexになります。
第二引数のendIndexは省略可能で、その場合は部分文字列はbeginIndexから始まり最後の文字までが範囲となります。サンプルコードで確認しましょう。
開始位置を指定して文字を切り出す
まずは開始位置を指定して文字を取得する方法を見てみましょう!
public class Main { public static void main(String[] args) { String country = "japan,america,russia"; System.out.println(country.substring(6)); System.out.println(country); } }
実行結果:
america,russia japan,america,russia
このサンプルコードでは、substringメソッドで文字列の7文字目から最後の文字までを返しています。そしてこのsubstringメソッドを使った後の変数countryですが、始めに初期化した状態の時と変わっていません。
あくまでも一部を切り出した文字列を新たに返しているということになります。
開始、終了位置を指定して文字を切り出す
次に特定の範囲だけ取得したいという場合についてご紹介します。開始位置と終了位置を指定します。
public class Main { public static void main(String[] args) { String country = "japan,america,russia"; System.out.println(country.substring(6, 13)); } }
実行結果:
america
このサンプルコードの場合は、substringメソッドで切り取りの開始位置7文字目として終了位置13文字目という指定をしています。こうすることで「america」だけを抜き出すことができています。
注意するところは、第一引数も第二引数も位置を指定するというところです。第二引数は切り取りたい文字数を指定するわけではない<ということです。
右から(後ろから)切り出す方法
文字を右端から切り取りたいと思ったことはありませんか?右端から切り取る方法はsubstringメソッドでも、また他のメソッドでもありません。そのためには、終了位置から文字数分引いた位置を開始位置とすることで実現できます。
切り取る対象となる文字列の長さと切り出す文字列の長さを指定もしくは取得する必要があります。
public class Main { public static void main(String[] args) { String country = "japan,america,russia"; int size = country.length(); int cut_length = 6; System.out.println(country.substring(size - cut_length)); } }
実行結果:
russia
このコードの場合、変数cut_lengthが切り出す文字列の長さとなります。変数sizeが切り取る対象となる文字列の長さになります。
一文字だけを切り出す方法
特定の場所の文字を取得したいといった場合は、charAtというメソッドを使います。文字列の中から一文字だけ抽出することが可能です。
public class Main { public static void main(String[] args) { String country = "japan,america,russia"; System.out.println(country.charAt(1)); } }
実行結果:
a
上記のコードの場合は、文字列の1番目の要素を取得しています。0番目の文字がjapanのjであるため1番目の要素はaとなり、aが表示されています。
例外処理
上記のsubstringやcharAtメソッドを扱う際に、文字数を超える位置を取得しようするとStringIndexOutOfBoundsExceptionという例外が発生します。
そのためsubstringやcharAtを扱う際には意図しない形で例外が発生しないように、事前に文字数チェックをしておきましょう。
public class Main { public static void main(String[] args) { String country = "japan,america,russia"; if(country.length() >= 13) { System.out.println(country.substring(6, 13)); } } }
実行結果:
america
まとめ
いかがでしょうか?substringの使い方について説明しました。右端から文字列を切り取りたいといった場合は自分で処理を書く必要があります。
頻繁に使う場合はメソッド化してしまえば楽に扱えるでしょう。また、一文字だけ取得したい場合はcharAtというメソッドを使うことも学びました。ぜひこの記事で習ったことを思い出して使っていって下さい。