Stringクラス

Stringクラスの様々なメソッド

Stringクラスは、文字列を扱うJavaのクラスであり、同時に最も基本的なクラスの一つでもあります。実はStringクラスは、単に文字列を扱っているばかりではなく、文字列を使った様々な操作ができるのです。ここでは、そんなStringクラスの様々な操作を紹介します。

文字列の長さ

Stringクラスには、文字列の長さを求めるlength()メソッドがあります。このメソッドを呼び出せば、文字列の長さがわかります。以下のサンプルを実行してみてください。

ClassSample01.java
package class4;

public class SampleClass01 {

	public static void main(String[] args) {
		String s1,s2;
		s1 = "あいうえお";
		s2 = "Hello";
		System.out.println("「"+s1+"」の文字列の長さは"+s1.length()+"です。");
		System.out.println("「"+s2+"」の文字列の長さは"+s2.length()+"です。");
	}

}

実行結果
「あいうえお」の文字列の長さは5です。
「Hello」の文字列の長さは5です。

文字列からわかるとおり、それぞれの文字列s1,s2の長さが求められています。一般にJavaの文字列はunicodeであらわされており、全角文字・半角文字の区別なく、文字列の長さは文字の数として表現されます。

substringメソッド

続いて、文字列の一部を切りぬくsubstringメソッドを紹介します。substring()はオーバーロードされており、引数を1つだけ必要とするものと、2つ必要とするものがあります。まずは、以下のサンプルを実行してみてください。

ClassSample02.java
package class4;

public class SampleClass02 {

	public static void main(String[] args) {
		String str1 = "ABCDEFGHIJKLMNOP";
		System.out.println(str1.substring(3,8));	//「DEFGH」が出力される
		System.out.println(str1.substring(3));		//「DEFGHIJKLMNOP」が出力される

	}

}
実行結果
DEFGH
DEFGHIJKLMNOP

実行結果からわかるとおり、引数が1つだけのものは、引数で指定されたインデックスの文字から末尾までを抜き出します。インデックスの基点は0になります。引数が2つあるものは、第1引数で指定されたインデックスにある文字から、第2引数で指定されたインデックスの直前までを抜き出します。

ポイントは、第2引数の前までという点です。「第1引数以上第2引数未満」という覚え方をするとわかりやすいでしょう。

compareToメソッド

compareTo()メソッドは、2つの文字列を辞書的に比較するメソッドです。以下のサンプルをじっくしてみてください。

ClassSample03.java
package class4;

public class SampleClass03 {

	public static void main(String[] args) {
		String str1 = "apple";
		String str2 = "orange";

		System.out.println(str1.compareTo(str2));	//負の数が返る
		System.out.println(str1.compareTo(str1));	//0が返ります
		System.out.println(str2.compareTo(str1));	//正の数が返る
	}

}
実行結果
-14
0
14

実行結果からわかる通り、文字列str1、str2があった場合、str1.compareTo(str2)とした場合、返ってくる値が負の数の場合は、str1の方が辞書的に前になります。逆に正の数の場合は、str1が辞書的に後になります。0が返ってきた場合は、文字列が等しいこととなります。

この比較は文字コードであるユニコードを基準に比較が行われています。そのため、英単語による比較は正確ですが、比較する対象が漢字を含む文字列の場合、(辞書的には)正しく比較されないため、注意が必要です。

toUpperCase()・toLowerCase()メソッド

続いて、toUpperCase()・toLowerCase()メソッドを見てみましょう。toUpperCase()は、メソッドの呼び出しに使われたStringに含まれる文字列をすべて大文字に変更するメソッドで、逆にtoLowerCase()は、小文字に変更するメソッドです。以下のサンプルを実行してみてください。

ClassSample04.java
package class4;

public class SampleClass04 {

	public static void main(String[] args) {
		String str = "Apple";
		System.out.println(str.toUpperCase());			//"APPLE"が出力される
		System.out.println(str.toLowerCase());			//"apple"が出力される

	}

}
実行結果
APPLE
apple

この場合、strが保持する文字列そのものが変わるわけではありません。本当に変えてしまいたい場合は、

toUpperCaseで、文字列の中身を変える場合の処理
str = str.toUpperCase();

のように再代入をおこなわなければなりません。toLowerCaseメソッドの場合についても同様なのは言うまでもありません。

trimメソッド

trimメソッドは、Stringクラスのオブジェクトの先頭または末尾の空白を切り捨てるメソッドです。以下のサンプルを実行してみてください。

ClassSample05.java
package class4;

public class SampleClass05 {

	public static void main(String[] args) {
		String str1 = "     Hello World.     ";	// 空白を含んだ文字列先頭と末尾に空白
		System.out.println(str1.trim());		// 末尾と先頭の空白が削除されてが出力される

	}

}
実行結果
Hello World.

実行結果からわかすとおり、先頭および末尾の空白が削除されています。ただ、文字列の中に含まれる空白はそのままです。ただし、気をつけなくてはならないのは、trimメソッドが切り捨てるのはあくまでも半角の空白のみだという点です。

Stringクラスには、このほかにもいくつものメソッドがあります。詳しくはリファレンスなどを用いて調べてみてください。