我正在做一些正则表达式来拆分一些字符串并从中提取Unicode和正常转义(基本上是Java接受的任何转义),然后我想通过一个方法解析它们。
这一切都很好,但是现在我已经收到了这些转义,我想将它们转换为实际的转义。例如,//Specify default value
const b = [
{ key: true },
{ key: true },
{ key: true },
{ key: true },
{ key: true }
]
[1, 3].forEach((x) => {
b[x].key = false;
})
字面上会转换为换行符。
我知道我可以使用Apache的\n
,但由于多种原因我不同意他们的许可,而且无论如何我宁愿能够自己做。
根据我的理解,我可以简单地做这样的事情:
StringEscapeUtils
但是我希望能够解析像switch (character) {
case 'n': return '\n';
case 't': return '\t';
default: return '\0';
}
和\0345346
这样的东西,Java将接受这些东西作为有效条目,而无需编写每个单一可能的组合。我可以正确地使用这些东西,但我希望能够将它们解析为字面值。
有什么方法可以实现这个目标吗?
答案 0 :(得分:0)
这可以通过滥用Properties
类来轻松完成,它将实际解析字符串数据并为您正确格式化。
private char escapeCharacter(String data) {
Properties p = new Properties();
try {
p.load(new StringReader("key=" + data));
} catch (IOException e) {
e.printStackTrace();
return '\0';
}
return p.getProperty("key").charAt(0);
}
这将转义代码作为String,将其加载到属性中,解析它,并返回更正的char。
该函数支持Unicode转义和常规转义,如问题所示。