Java 改行コード・タブコードを置換する方法 - クラス String ホームページ制作 | 墨田区

Java 改行コード・タブコードを置換する方法 – クラス String

LINEで送る
Pocket

文字列の置換するメソッドといえば、replace メソッド replaceAll メソッドを使用しますね。
改行コードやタブコードを置換する方法も同じです。

String result = "対象文字列".replaceAll("正規表現", "置換文字列");

他にも、Pattern クラスと Matcher クラスを利用することで可能となります。

Pattern pt = Pattern.compile("正規表現");
Matcher match = pt.matcher("対象文字列");
String result = match.replaceAll("置換文字列");

一行で書くこともできます。

String result = Pattern.compile("正規表現").matcher("対象文字列").replaceAll("置換文字列");




【PR】マジか?!「アレ」してるLINEスタンプっていったい・・・



早速テストしてみましょう。

replaceAll を利用した場合

System.out.println("1. "+"A\tC".replaceAll("\t", "B"));
System.out.println("2. "+"A\nC".replaceAll("\n", "B"));
System.out.println("3. "+"A\r\nC".replaceAll("\r\n", "B"));
System.out.println("4. "+"A\r\nC".replaceAll("\n", "B"));

結果は以下の通りです。
1. ABC
2. ABC
3. ABC
4. A
BC

Pattern.compile を利用した場合

System.out.println("1. "+Pattern.compile("\t").matcher("A\tC").replaceAll("B"));
System.out.println("2. "+Pattern.compile("\n").matcher("A\nC").replaceAll("B"));
System.out.println("3. "+Pattern.compile("\r\n").matcher("A\r\nC").replaceAll("B"));
System.out.println("4. "+Pattern.compile("\n").matcher("A\r\nC").replaceAll("B"));

結果は以下の通りです。
1. ABC
2. ABC
3. ABC
4. A
BC

いづれのケースも対象文字列が null の場合、NullPointerException が発生します。
実務で利用する場合は、様々なケースが想定されますので、以下のようなメソッドを用意し、対応することをお勧めします。

/**
 * 指定された正規表現に一致する場合、対象文字列で置換します。
 *
 * @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("A\tC", "\t", "B"));
System.out.println("4. "+StringUtils.replaceAllRegex("A\nC", "\n", "B"));
System.out.println("5. "+StringUtils.replaceAllRegex("A\r\nC", "\r\n", "B"));
System.out.println("6. "+StringUtils.replaceAllRegex("A\r\nC", "\n", "B"));

結果は以下の通りです。
1. 
2. 
3. ABC
4. ABC
5. ABC
6. A
BC

これで、対象文字列が null の場合でも例外が発生せず、後続の処理が動作できますね。
 環境によっては、改行コードが、"\n" の場合と、"\r\n" の場合があります。
"\n" だと思って置換したら置換できず、実は "\r\n" だった・・なんてことでハマるかもしれません。
くれぐれもご注意を。

おつかれさまでした。

LINEで送る
Pocket

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

コメントを残す

コメント(必須)

お名前 (必須)
メールアドレス
(アドレスは公開されません)

Trackback URL