从Java字符串中删除无效的转义序列

从Java字符串中删除无效的转义序列,java,Java,我在json字符串中有一个无效的转义序列。顺序是: 'ngram':“'s\xa0癌症预防” 我一直试图通过用一个空白字符串替换它来完全删除这个序列,但是每次尝试都失败了。我尝试过以下方法: qumlsOutputAsJson = qumlsOutputAsJson.replaceAll("[^\\x20-\\x7E]", ""); 及 甚至是例行公事: private String removeNonAscii(String text){ String asciiText =

我在json字符串中有一个无效的转义序列。顺序是:

'ngram':“'s\xa0癌症预防”

我一直试图通过用一个空白字符串替换它来完全删除这个序列,但是每次尝试都失败了。我尝试过以下方法:

qumlsOutputAsJson = qumlsOutputAsJson.replaceAll("[^\\x20-\\x7E]", "");

甚至是例行公事:

    private String removeNonAscii(String text){
    String asciiText = "";
    for (char aChar: text.toCharArray()){
        if((int)aChar<=0x7F)
            asciiText = asciiText + Character.toString(aChar);
    }
    return asciiText;
}
private String removeNonAscii(字符串文本){
字符串asciiText=“”;
for(char-aChar:text.toCharArray()){

如果((int)aChar与
replaceAll
一起使用,则需要转义反斜杠,即
“\\\\”,“

如果您刚刚使用了
replace
,您的应该可以正常工作

qumlsOutputAsJson = qumlsOutputAsJson.replaceAll("\\\\", "");

我添加了一个答案,但我误读了你的问题。你的预期输出是什么?一行代码来删除有问题的无效转义序列。但它不能特定于我给出的那行,只是从stringRegex中删除无效转义序列的一段通用代码需要两个反斜杠来表示一个,因为反斜杠也是一个反斜杠正则表达式中的cape序列。
qumlsOutputAsJson=qumlsOutputAsJson.replaceAll(“[^\\\\x20-\\\\x7E]”,”);
请原谅我昏昏欲睡的大脑,但在你的例子中,输出应该是什么?不用担心。输出应该是:“ngram”:“sxa0癌症预防”甚至“ngram”:“sa0cancer预防”。有什么可以删除不正常的逃逸序列吗
qumlsOutputAsJson = qumlsOutputAsJson.replaceAll("\\\\", "");