>> Java入門トップに戻る

Stringクラス 文字列置換 replace,replaceAll

Javaで文字列を置換する方法について説明します。

文字列を置換するには、Stringクラスの「replaceメソッドやreplaceAllメソッド」を使います。

まずreplaceメソッドから説明していきます。
replaceメソッドは

第一引数に検索文字列
第二引数に置換文字列

を指定します。
戻り値は置換後の文字列を返しますが、第一引数の検索文字が見つからなかった場合は元Stringオブジェクトへの参照が返ります。
package test7;

public class Moji{
	
	public static void main(String[] args){
		
		String test = "AAABBBCCC";
		
		String tmp="";
		
		//BをZに変換
		tmp = test.replace("B", "Z");
		
		//表示
		System.out.println(tmp);

	}
}
AAABBBCCC」というStringオブジェクトからreplaceメソッドを実行して「B」を「Z」に置換しています。
ですのでこれを実行すると「AAAZZZCCC」という文字列が表示されます。

もう一つの「replaceAllメソッド」も文字列を置換するメソッドなのですがこちらは「正規表現」を使います。
正規表現がわからない方はググって見てください。
当サイトのJavaScriptの正規表現のページでも説明していますが、若干Javaと違う部分もあるので注意してください。
replaceAllメソッドは

第一引数は置換したい文字列に一致する正規表現
第二引数は置換文字列

を指定します。
戻り値は置換後の文字列が返されます。
第一引数の正規表現にマッチする文字列が見つからなかった場合は元のStringオブジェクトへの参照が返されます。
package test7;

public class Moji{

	public static void main(String[] args){
		
		String test = "AAA159CCC";
		
		String tmp="";
		
		//連続する数字を1つのXに変換
		tmp = test.replaceAll("[0-9]+", "X");
		
		//表示
		System.out.println(tmp);
		
		//数字部分をキャプチャして置換
		tmp = test.replaceAll("[A-Z]+?([0-9]+?)[A-Z]+","$1");
		
		//表示
		System.out.println(tmp);
	
	}
}
一つ目のreplaceAllメソッドでは「AAA159CCC」という文字列の連続する数字部分をXという1つの文字に置換しています。
なので「AAAXCCC」という文字列が表示されます。

二つ目の方では正規表現を知らない人には意味がわからないと思いますが数字部分をキャプチャして、その数字部分だけになるように置換しています。
なのでこちらの置換後の文字列は「159」という文字列になります。
このようにキャプチャの機能も使えるので非常に使い勝手が良いです。

文字列の置換はかなりよく使うので是非覚えておくと良いです。
特に正規表現が使えれば色々なことが出来るようになります。


>> 【Stringクラス 文字列の部分取得 substring】に進む
>> Java入門トップに戻る