我有一个来自应用程序的以下字符串:
Hotel “Lowest Rate Guaranteed” Terms and Conditions
我尝试使用以下行替换上述语句中的双引号:
Tempdata = Tempdata.replace("\"", "");
System.out.println(Tempdata);
它不起作用并且总是返回相同的值,但是如果我手动删除上面的双引号并手动输入双引号并尝试相同的命令,它工作正常。
手动替换双引号后,字符串看起来像
Hotel "Lowest Rate Guaranteed" Terms and Conditions
我们可以看到双引号中有细微的差别。看起来来自应用程序的双引号是 utf-8。
感谢任何帮助。谢谢
最佳答案
您只需将双引号复制到替换中即可,相应的代码为 \u201c
和 \u201d
。
或者,您可以使用正则表达式,例如 [\"'\u2018\u2019\u201c\u201d]
来匹配所有引号。(但这些字符经常被误用作引号。I'我看着你,‘严肃而敏锐’)
哪里
"
匹配"
'
匹配'
\u2018
匹配‘
(左单引号)\u2019
匹配'
(右单引号)\u201c
匹配“
(左双引号)\u201d
匹配”
(右双引号)
一个例子就是使用String.replaceAll()
:
tempdata = tempdata.replaceAll("[\"'\u2018\u2019\u201c\u201d]", "")
或者,如果您需要经常这样做,编译模式并保存会更有效:
类(class)中的某个地方:
private final Pattern quotation = Pattern.compile("[\"'\u2018\u2019\u201c\u201d]")
然后再往下:
quotation.matcher(tempdata).replaceAll("")
在一个不相关的注释中,不要在 Java 中给变量提供大写的名称,它会灼伤我的眼睛,并且违反了所有常见的约定。给它们提供与类相同的名称是额外的邪恶。
关于java - 替换不是替换java中的双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35534414/