0

エスケープメカニズムを実際に実行する前に、特定の文字列をエスケープする必要があるかどうかを確認したいと思います。たとえば、文字列が"msg\t" なのでエスケープしたいが、文字列が"msg\\t" すでにエスケープされていることを意味している場合、または "msg" はまったくエスケープする必要がないことを意味します。

簡単に確認する方法はありますか?

4

1 に答える 1

0

あなたの説明に基づいて、これはうまくいくはずです。マップを使用して、実際の値をそれを表す文字にマップします。バックスラッシュは別々に処理する必要がある二重の目的を果たすため、バックスラッシュをエスケープするために追加のロジックを組み込む必要があります。

Map<String,String> esc = Map.of( "\t", "t", "\n", "n", "\f", "f");
String s = "msg\n msg\\t msg\\n msg\n";

for (Entry<String,String> e : esc.entrySet()) {
    s = s.replace(e.getKey(), "\\"+e.getValue());
}

System.out.println(s);

版画

msg\n msg\t msg\n msg\n
于 2021-02-16T14:37:58.770 に答える