【发布时间】:2013-10-06 18:21:50
【问题描述】:
Java(或任何其他第 3 方库)是否提供 API 用于根据字符代码(当然在已知的 Charset 内)而不是正则表达式替换字符?例如,要将给定字符串中的双引号替换为单引号,可以使用:
String noDoubles = containsDoubles.replace("\"", "'");
但是,双引号的 UTF-8 字符代码是 U+0022。那么有什么东西可以搜索U+0022 字符的实例并用单引号替换它们吗?
另外,这里不只是询问双引号/单引号,我说的是字符代码查找和任意 2 个字符的替换。
【问题讨论】:
-
我个人认为
"\""比'\u0022'更清楚你在做什么。 -
针对已发布的一些答案:请不要对 U+0020 到 U+007E 范围内的字符使用 Unicode 文字 (
\uhhhh)。显然很容易认为它们就像字符串或字符文字中的其他转义序列一样工作(如\n),但事实并非如此;在 Java 中,它们被更早地解释并可能影响语法。只是为了好玩,试着在你的脑海中猜测它会输出什么:System.out.println("\u005c\u006n".length());,然后试试看它实际输出什么。 -
@ajb 由于非法的 unicode 转义码(不允许使用“n”)而无法编译:ideone.com/pMyNY6
-
@PhilippWendler Duh。应该是
System.out.println("\u005c\u006e".length());
标签: java regex string character-encoding replace