エスケープメカニズムを実際に実行する前に、特定の文字列をエスケープする必要があるかどうかを確認したいと思います。たとえば、文字列が"msg\t
" なのでエスケープしたいが、文字列が"msg\\t"
すでにエスケープされていることを意味している場合、または "msg" はまったくエスケープする必要がないことを意味します。
簡単に確認する方法はありますか?
エスケープメカニズムを実際に実行する前に、特定の文字列をエスケープする必要があるかどうかを確認したいと思います。たとえば、文字列が"msg\t
" なのでエスケープしたいが、文字列が"msg\\t"
すでにエスケープされていることを意味している場合、または "msg" はまったくエスケープする必要がないことを意味します。
簡単に確認する方法はありますか?
あなたの説明に基づいて、これはうまくいくはずです。マップを使用して、実際の値をそれを表す文字にマップします。バックスラッシュは別々に処理する必要がある二重の目的を果たすため、バックスラッシュをエスケープするために追加のロジックを組み込む必要があります。
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