我有一个输入字符串,我需要处理并移交给不受我控制的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