用字符代码而不是正则表达式替换字符串?

时间:2013-09-30 19:05:02

标签: java regex string character-encoding replace

Java(或任何其他第三方lib)是否提供了基于字符代码替换字符的API(当然,在已知的Charset内)而不是正则表达式?例如,要用给定字符串中的单引号替换双引号,可以使用:

String noDoubles = containsDoubles.replace("\"", "'");

然而,双引号的UTF-8字符代码为U+0022。那么有什么能够搜索U+0022个字符的实例并用单引号替换它们吗?

此外,这里不只是询问双/单引号,我在谈论字符代码查找和替换任意2个字符。

3 个答案:

答案 0 :(得分:5)

使用带有字符的重载版本 - String#replace(char, char)。所以,你可以像这样使用它:

String str = "aa \" bb \"";
str = str.replace('\u0022', '\'');
System.out.println(str);  // aa ' bb '

答案 1 :(得分:2)

只需使用unicode文字:

// I'm using an unicode literal for "
String noDoubles = containsDoubles.replace('\u0022', '\'');

以上内容适用于任何角色,只要您知道相应的代码即可。

答案 2 :(得分:-1)

您还可以使用正则表达式。来自Javadoc

  

\ xhh十六进制值为0xhh

的字符      

\ uhhhh十六进制值为0xhhhh

的字符

因此你可以这样写:

String noDoubles = containsDoubles.replace("\\u0022", "'");