我收到了排队服务的消息,我认为这是一个UTF-8编码的字符串。结果是String中的引用和转义字符串。也就是说,字符串本身的第一个和最后一个字符是"
,每个换行符是两个字符\n
,引号(很多因为这是XML)是\"
,而单个UTF-外语中的8个字符表示为六个字符(例如,\uABCD
)。我知道我可以通过滚动自己解开所有这些,但我认为必须有一组方法可以做到这一点。咒语可能是什么?
答案 0 :(得分:0)
在@JonSkeet和@ njzk2的反馈之后,我想出了这个,它起作用了:
// gradle: 'org.apache.commons:commons-lang3:3.3.2'
import org.apache.commons.lang3.StringEscapeUtils;
String s = serviceThatSometimesReturnsQuotedStringWithinString();
String usable = null;
if (s.length() > 0 && s.charAt(0) == '"' && s.charAt(s.length()-1) == '"') {
usable = StringEscapeUtils.unescapeEcmaScript(s.substring(1, s.length()-1));
} else {
usable = s;
}