这可能是一个超级愚蠢的问题,但我无法弄清楚为什么StringEscapeUtils以这种方式行事。在java中转义点。 (StringEscapeUtil)
这是一个的失败,并出现以下错误第二断言:
org.junit.ComparisonFailure: Did not escape correctly Expected :
t\.ext
Actual :t.ext
测试
public class ServerDataTest {
@Test
public void escape() throws Exception {
assertEquals("Did not escape correctly", "text", ServerData.escape("text"));
assertEquals("Did not escape correctly", "t\\.ext", ServerData.escape("t.ext"));
assertEquals("Did not escape correctly", "te\\\\xt", ServerData.escape("te\\xt"));
assertEquals("Did not escape correctly", "te\\\\\\.xt", ServerData.escape("te\\.xt"));
}
}
逃避者实用
private final static Map<CharSequence, CharSequence> ESCAPE_MAP = new HashMap<>();{
ESCAPE_MAP.put("\\", "\\\\");
ESCAPE_MAP.put(".", "\\.");
}
private static LookupTranslator ESCAPE = new LookupTranslator(ESCAPE_MAP);
private final static Map<CharSequence, CharSequence> UNESCAPE_MAP = new HashMap<>();{
UNESCAPE_MAP.put("\\\\", "\\");
UNESCAPE_MAP.put("\\.", ".");
}
private static LookupTranslator UNESCAPE = new LookupTranslator(UNESCAPE_MAP);
static String escape(String text){
return StringEscapeUtils.builder(ESCAPE).escape(text).toString();
}
static String unescape(String text){
return StringEscapeUtils.builder(UNESCAPE).escape(text).toString();
}
你想考什么实际? – Ravi
单元测试应该通过...我试图测试我的逃生方法,可以正确逃脱。 E.g.在英文中,如果没有Java修改它,'.'应该导致'\。''\'应该导致'\\',以便\和转义字符在转义时是明确的。 –