Java 改行コード・タブコードを置換する方法 - クラス String
Javaで改行コード・タブコードを置換する方法です。
文字列の置換するメソッドといえば replace
メソッド replaceAll
メソッドを使用しますね。改行コードやタブコードを置換する方法も同じです。
ここでは Javaで改行コード・タブコードを置換する方法 を紹介します。
目次
replaceAllメソッドの仕様
replaceAllメソッドの仕様は下記の通りです。
String result = "対象文字列".replaceAll("正規表現", "置換文字列");
replaceAllメソッドのテスト
replaceAllメソッドをテストしてみます。
System.out.println("1. "+"AtC".replaceAll("t", "B"));
System.out.println("2. "+"AnC".replaceAll("n", "B"));
System.out.println("3. "+"ArnC".replaceAll("rn", "B"));
System.out.println("4. "+"ArnC".replaceAll("n", "B"));
結果は以下の通りです。
1. ABC
2. ABC
3. ABC
4. A
BC
他にも、Pattern
クラスと Matcher
クラスを利用することで可能となります。
PatternクラスとMatcherクラスの仕様
PatternクラスとMatcherクラスの仕様は下記の通りです。
Pattern pt = Pattern.compile("正規表現");
Matcher match = pt.matcher("対象文字列");
String result = match.replaceAll("置換文字列");
一行で書くこともできます。
String result = Pattern.compile("正規表現").matcher("対象文字列").replaceAll("置換文字列");
Pattern.compileメソッドのテスト
Pattern.compileを利用した場合のテストです。
System.out.println("1. "+Pattern.compile("t").matcher("AtC").replaceAll("B"));
System.out.println("2. "+Pattern.compile("n").matcher("AnC").replaceAll("B"));
System.out.println("3. "+Pattern.compile("rn").matcher("ArnC").replaceAll("B"));
System.out.println("4. "+Pattern.compile("n").matcher("ArnC").replaceAll("B"));
結果は以下の通りです。
1. ABC
2. ABC
3. ABC
4. A
BC
いづれのケースも対象文字列が null
の場合 NullPointerException
が発生します。実務で利用する場合は、様々なケースが想定されますので、以下のようなメソッドを用意し、対応することをお勧めします。
replaceAllRegexメソッドを作る
独自メソッドを作ってみました。
/**
* 指定された正規表現に一致する場合、対象文字列で置換します。
*
* @param value 処理対象となる文字列
* @param regex 正規表現
* @param replacement 置換文字列
* @return 置換後の配列
*/
public static String replaceAllRegex(String value, String regex, String replacement) {
if ( value == null || value.length() == 0 || regex == null || regex.length() == 0 || replacement == null )
return "";
return Pattern.compile(regex).matcher(value).replaceAll(replacement);
}
早速テストしてみましょう。
System.out.println("1. "+StringUtils.replaceAllRegex(null, "*", "*"));
System.out.println("2. "+StringUtils.replaceAllRegex("", "*", "*"));
System.out.println("3. "+StringUtils.replaceAllRegex("AtC", "t", "B"));
System.out.println("4. "+StringUtils.replaceAllRegex("AnC", "n", "B"));
System.out.println("5. "+StringUtils.replaceAllRegex("ArnC", "rn", "B"));
System.out.println("6. "+StringUtils.replaceAllRegex("ArnC", "n", "B"));
結果は以下の通りです。
1.
2.
3. ABC
4. ABC
5. ABC
6. A
BC
これで、対象文字列が null
の場合でも例外が発生せず、後続の処理が動作できますね。まとめ
Javaで改行コード・タブコードを置換する方法を紹介しました。
環境によっては、改行コードが、"n"
の場合と、"rn"
の場合があります。"n"
だと思って置換したら置換できず、実は "rn"
だった・・なんてことでハマるかもしれません。くれぐれもご注意を。
おつかれさまでした。