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" だった・・なんてことでハマるかもしれません。くれぐれもご注意を。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。