文字列を扱うStringクラス

文字列を扱うStringクラス【開発現場でもよく使うメソッド10選】

Javaにおいては複数の文字の集まりを『文字列』といいます。
文字列はint型や、double型などのような基本データ型ではなく、『Stringクラス』のインスタンスとして扱われます。

このStringクラスでは文字列を操作するためのメソッドが数多く提供されています。
今回はそのメソッドの中から、私が現場でもよく使うと感じるメソッドを抜粋してご紹介したいと思います。

Javaでは文字列の中の特定の文字が、その文字列の何文字目に存在するかを表す際に、『インデックス』という番号を使います。

インデックスは文字列の1文字目に0番、2文字目には1番、3文字目には2番といった具合に、0から順番に数が振られます。1文字目が1番ではないので気を付けましょう。

『あいうえお』という文字列があった場合、この文字列のインデックス1番の文字は『い』、インデックス4番は『お』となります。

1、indexOf()

『indexOf()』メソッドは文字列の中から引数で渡された文字が出現するかを検索し、出現する場合にそのインデックス番号を返すメソッドです。

引数に渡した文字列(検索したい文字列)が、検索対象の文字列に含まれない場合にはインデックスの代わりに『-1』が返されます。

【サンプル】

String str = "検索対象の文字列1";

int num1 = str.indexOf("の");
int num2  = str.indexOf("無");

System.out.println(num1);
System.out.println(num2);

【実行結果】

2、substring()

『substring()』メソッドは文字列の一部分だけを切り出すことが出来るメソッドです。
引数にはどの部分を切り出すのかを指定するためのインデックス番号を渡します、引数を1つだけ渡した場合は、そのインデックス以降の文字列がすべて切り出されます。

引数を2つ渡した場合には、第一引数の数字以降のインデックスから、第二引数の数字の1つ前のインデックスまでの文字列が切り出されます。

【サンプル】

String str = "検索対象の文字列1";

String from = str.substring(5);
String fromTo = str.substring(5, 6);

System.out.println(from);
System.out.println(fromTo);

【実行結果】

3、toLowerCase()

『toLowerCase()』メソッドは、文字列を小文字へ変換するメソッドです。

小文字への変換が可能なのは英字のみで、日本語や数字はそのまま元の文字列が返されます。

【サンプル】

String str1 = "OOMOJI";
String str2 = "日本語123";

str1 = str1.toLowerCase();
str2 = str2.toLowerCase();

System.out.println(str1);
System.out.println(str2);

【実行結果】

4、toUpperCase()

『toUpperCase()』メソッドは、文字列を大文字へ変換するメソッドです。
『toLowerCase()』メソッドと同様に、対象は英字のみで、日本語や数字は元の文字列がそのまま返されます。

【サンプル】

String str1 = "komoji";
String str2 = "日本語123";

str1 = str1.toUpperCase();
str2 = str2.toUpperCase();

System.out.println(str1);
System.out.println(str2);

【実行結果】

5、replace()

『replace()』メソッドは文字列の置換を行うメソッドです。
第一引数には置換対象となる文字列を、第二引数には置換後の文字列を渡します。

置換対象となる文字列の検索は文字列の前から後ろの順に検索されます。

【サンプル】

String str1 = "あいあいあい";
str1 = str1.replace("あ", "い");
System.out.println(str1);

String str2 = "aaa";
str2 = str2.replace("aa","b");
System.out.println(str2);

【実行結果】

6、length()

『length()』メソッドは引数に渡された文字列の長さをカウントして返すメソッドです。
文字列の長さはint型で戻されます。

文字列はユニコード単位で1文字としてカウントされますので、日本語の全角半角、数字、英字も1文字が1文字としてカウントされます。

【サンプル】

String str1 = "あいうえおカキクケコ";
int length1 = str1.length();

String str2 = "1234567890";
int length2 = str2.length();

String str3 = "abcdefghij";
int length3 = str3.length();

System.out.println(length1);
System.out.println(length2);
System.out.println(length3);

【実行結果】

7、startsWith()、endsWith()

『startsWith()』メソッドと、『endsWith() 』メソッドは指定の文字列が、メソッドの引数に渡した文字列で始まるか、もしくは終わるかを判断するためのメソッドです。

引数に渡した文字列で始まるかを判断したい場合は『startsWith()』メソッドを、終わるかを判断したい場合は『endsWith()』メソッドを使用します。

判定の結果は『boolean型(true/false)』で返されます。
また、英字の場合は大文字と小文字は別物として扱われます。

【サンプル】

String str1 = "abcdefg";

boolean result1 = str1.startsWith("a");
boolean result2 = str1.startsWith("G");

System.out.println(result1);
System.out.println(result2);

【実行結果】

8、charAt()

『charAt()』メソッドは文字列に含まれる1文字を取得したい場合に使えるメソッドです。
取得したい場所のインデックスを引数に渡すことで、インデックスの場所の文字を取得することが出来ます。

文字列の範囲を超えるインデックスを指定したり、負の数を引数に渡した場合は『StringIndexOutOfBoundsException』の例外が発生します。

【サンプル】

String str1 = "abcdefg";

char c1 = str1.charAt(0);
char c2 = str1.charAt(6);

System.out.println(c1);
System.out.println(c2);

【実行結果】

9、trim()、strip()

文字列の先頭および末尾にスペースが存在する場合、スペースを除いた文字列を返すメソッドです。
『trim()』メソッドは半角スペースのみ、『strip()』メソッドは半角スペースも全角スペースもまとめて削除してくれます。

【サンプル】

String str1 = " abcdefg ";	// 先頭に全角スペース1つ、末尾に半角スペース1つ
str1 = str1.trim();
System.out.println("trim『" + str1 + "』");

String str2 = " abcdefg ";	// 先頭に全角スペース1つ、末尾に半角スペース1つ
str2 = str2.strip();
System.out.println("strip『" + str2 + "』");

【実行結果】

10、equals()

『equals()』メソッドは指定の文字列と引数で渡された文字列が同じ文字列であるかを判定するメソッドです。
基本データ型(プリミティブ型)同士の比較を行う場合には比較演算子の『==』を使用しますが、参照型の比較に『==』を使用すると期待する結果が得られない場合があります。
これは基本データ型と参照型のメモリ上での値の扱われ方によるものです。詳しくは下記のページをご覧ください。

文字列同士が等しいかどうかの比較には基本的には『equals()』メソッドを使用すると覚えておきましょう。
『equals()』メソッドは与えられた文字列同士が等しい場合には『true』を、等しくない場合には『false』を返します。

【サンプル】

String str1 = "比較したい文字列";
String str2 = new String("比較したい文字列");

boolean result1 = str1.equals(str2);

// 『==』による比較では期待される結果が得られない場合がある
boolean result2 = (str1 == str2);

System.out.println(result1);
System.out.println(result2);

【実行結果】

ここまで現場で働く中で『Stringクラス』の中でもよく使われると感じるメソッドをピックアップしてご紹介していきました。
『Stringクラス』のメソッドはこれらだけではなくほかにも文字列の操作に関するメソッドが提供されています。

今回ご紹介した以外のメソッドは公式のAPIリファレンスに掲載されていますので、興味のある方は参考になさってください。
Java® Platform, Standard Edition & Java Development Kit バージョン11 API仕様