【发布时间】:2021-05-19 08:40:27
【问题描述】:
我想在真正执行任何转义机制之前检查是否应该转义特定的字符串。
例如:
如果字符串是 "msg\t" 所以我想转义它,但如果字符串是 "msg\\t" 意味着它已经被转义,或者例如 "msg" 意味着根本不需要转义。
有什么方法可以轻松检查吗?
【问题讨论】:
标签: java escaping stringescapeutils string-escape
我想在真正执行任何转义机制之前检查是否应该转义特定的字符串。
例如:
如果字符串是 "msg\t" 所以我想转义它,但如果字符串是 "msg\\t" 意味着它已经被转义,或者例如 "msg" 意味着根本不需要转义。
有什么方法可以轻松检查吗?
【问题讨论】:
标签: java escaping stringescapeutils string-escape
根据您的描述,这应该可以。它使用映射将实际值映射到表示它的字母。需要合并额外的逻辑来避免反斜杠,因为它们有双重目的,需要单独处理。
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
【讨论】: