
Javaでのreplaceを使用した文字列置換方法を紹介|replaceを使いこなそう!
目次
Javaでの文字列置換方法とは?
>今回は、Javaでの文字列置換方法について説明します。文字列置換には、replace / replaceAll / replaceFirstそれぞれのメソッドを使用します。これからはメソッドの使い方について紹介します。
Javaでの文字列置換方法に興味のある方はぜひご覧ください。
replace
Javaでは、replaceメソッドで文字列を置換できます。
以下のように記述します。
文字列.replace(置換対象文字列, 置換文字列)
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 |
String str = ""hoge piyo fuga hoge""; // ""hoge""を""test""に置換 String result = str.replace(""hoge"", ""test""); System.out.println( result ); // test piyo fuga test |
実行結果は以下のようになります。
1 |
test piyo fuga test |
このように、Javaではreplaceメソッドで文字列を置換できます。
replaceAll
単純な文字列の置換はreplaceメソッドで十分ですが、正規表現を使用した文字列置換を行う場合は、replaceAllを使用します。
以下のように記述します。
文字列.replaceAll(正規表現, 置換文字列)
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
String str = ""hoge 0123 PIYO 4567 hoge 890 FUGA""; // 小文字アルファベットの1回以上の繰り返しを""abc""に置換 String result1 = str.replaceAll(""[a-z]+"", ""abc""); // 大文字アルファベットの1回以上の繰り返しを""ABC""に置換 String result2 = str.replaceAll(""[A-Z]+"", ""ABC""); // 数字の1回以上の繰り返しを""num""に置換 String result3 = str.replaceAll(""[0-9]+"", ""num""); System.out.println( result1 ); // abc 0123 PIYO 4567 abc 890 FUGA System.out.println( result2 ); // hoge 0123 ABC 4567 hoge 890 ABC System.out.println( result3 ); // hoge num PIYO num hoge num FUGA |
実行結果は以下のようになります。
1 2 3 |
abc 0123 PIYO 4567 abc 890 FUGA hoge 0123 ABC 4567 hoge 890 ABC hoge num PIYO num hoge num FUGA |
このように、JavaではreplaceAllメソッドで文字列を置換できます。
replaceFirst
replaceAllと似たメソッドに、replaceFirstメソッドがあります。replaceFirstメソッドは、正規表現に最初に一致した、文字列を置換します。
以下のように記述します。
文字列.replaceFirst(正規表現, 置換文字列)
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
String str = ""hoge 0123 PIYO 4567 hoge 890 FUGA""; // 小文字アルファベットの1回以上の繰り返しを""abc""に置換 String result1 = str.replaceFirst(""[a-z]+"", ""abc""); // 大文字アルファベットの1回以上の繰り返しを""ABC""に置換 String result2 = str.replaceFirst(""[A-Z]+"", ""ABC""); // 数字の1回以上の繰り返しを""num""に置換 String result3 = str.replaceFirst(""[0-9]+"", ""num""); System.out.println( result1 ); // abc 0123 PIYO 4567 hoge 890 FUGA System.out.println( result2 ); // hoge 0123 ABC 4567 hoge 890 FUGA System.out.println( result3 ); // hoge num PIYO 4567 hoge 890 FUGA |
実行結果は以下のようになります。
1 2 3 |
abc 0123 PIYO 4567 hoge 890 FUGA hoge 0123 ABC 4567 hoge 890 FUGA hoge num PIYO 4567 hoge 890 FUGA |
正規表現に最初に一致した文字列が置換されていることが分かります。
このように、JavaではreplaceFirstメソッドで文字列を置換できます。
replaceLast
replaceFirstは最初に一致した正規表現を置換します。最後に一致した正規表現を置換する標準メソッドは用意されていませんので、自作する必要があります。
ここでは、最後に一致した正規表現を置換するメソッド(replaceLast)を作成してみます。実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
public static void main(String[] args) throws Exception { String str = ""hoge 0123 PIYO 4567 hoge 890 FUGA""; // 小文字アルファベットの1回以上の繰り返しを""abc""に置換 String result1 = replaceLast(str, ""[a-z]+"", ""abc""); // 大文字アルファベットの1回以上の繰り返しを""ABC""に置換 String result2 = replaceLast(str, ""[A-Z]+"", ""ABC""); // 数字の1回以上の繰り返しを""num""に置換 String result3 = replaceLast(str, ""[0-9]+"", ""num""); System.out.println( result1 ); // hoge 0123 PIYO 4567 abc 890 FUGA System.out.println( result2 ); // hoge 0123 PIYO 4567 hoge 890 ABC System.out.println( result3 ); // hoge 0123 PIYO 4567 hoge num FUGA } public static String replaceLast(String str, String regex, String replacement) { if(str == null || str.isEmpty()){ return str; } return str.replaceFirst(""(?s)""+regex+""(?!.*?""+regex+"")"", replacement); } |
実行結果は以下のようになります。
1 2 3 |
hoge 0123 PIYO 4567 abc 890 FUGA hoge 0123 PIYO 4567 hoge 890 ABC hoge 0123 PIYO 4567 hoge num FUGA |
正規表現に最後に一致した文字列が置換されていることが分かります。
正規表現に一致した文字列の参照
Javaでは、正規表現に一致した文字列を$0,$1,$2などで参照できます。
$0は一致した部分全体となります。$1、$2、$3は、一致した順番で参照できます。
実際のソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 |
String str = ""hoge 0123 PIYO""; // 一致した文字列全体を$0で参照 String result1 = str.replaceAll(""(\\w+)"", ""($0)""); // 一致した文字列を$1, $2, #3で参照 String result2 = str.replaceAll(""(\\w+) (\\w+) (\\w+)"", ""($3) ($2) ($1)""); System.out.println( result1 ); // (hoge) (0123) (PIYO) System.out.println( result2 ); // (PIYO) (0123) (hoge) |
実行結果は以下のようになります。
1 2 |
(hoge) (0123) (PIYO) (PIYO) (0123) (hoge) |
このように、Javaでは正規表現に一致した文字列を$0,$1,$2などで参照できます。
Javaのさまざまなreplaceメソッドを正しく使いこなそう
いかがでしたでしょうか。Javaでの文字列置換方法について説明しました。
文字列置換には、replace / replaceAll / replaceFirstメソッドを使用します。今回はそれぞれのメソッドの使い方について紹介しました。
また、正規表現に一致した文字列の参照方法についても紹介しました。ぜひご自身でJavaのソースコードを書いて、理解を深めてください。