用相应的unicode替换String中的特殊字符(非ASCII)

时间:2017-01-26 14:02:42

标签: java string unicode non-ascii-characters

我有一个输入字符串,我需要处理并移交给不受我控制的REST Web服务。 作为JSON请求的一部分,Web服务不支持特殊字符,并且只要这些字符是String的一部分就会抛出错误。

有没有办法用其unicode等效替换所有不属于ASCII字符集的字符:\ u1005

String myString = "abစcd";
myString.doSomething(); //replace non-ASCII characters
System.out.println(myString) //should print ab\u1005cd

我不知道哪个特殊字符可能是myString的一部分,并且用空字符串替换它们也不是一个选项。 有没有办法自行更换每个特殊角色?

编辑/溶液: 问题的不同之处在于我想用他们的unicode等效替换我的字符,而不是删除它们/用空字符串替换它们。

String input = "    !@#$%^&*()_+£€      "; //contains tabs & different whitespaces
    String returnString = "";
    for(char c:input.toCharArray()){
        if((c | 0x01) > 126){
            returnString += "\\u"+Integer.toHexString(c|0x10000).substring(1);
        }
        else{
            returnString += c;
        }
    }
System.out.println(returnString); //    !@#$%^&*()_+\u00a3\u20ac\u2004\u2005 \u1680\u2002\u2003

0 个答案:

没有答案