java - 替换不是替换java中的双引号

标签 java replace

我有一个来自应用程序的以下字符串:

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/

相关文章:

java - 我在哪里可以找到 AS400 到 Java 的接口(interface)?

java - 包含汉字和全角/半角字符的正则表达式

java - 在 Android 中写入 SD 卡中的文件

java - 复合主键太长?

java - RESTEasy:找不到内容类型应用程序/json 类型的编写器

javascript - 单击 3 次后,编码的 JavaScript 不会替换元素的问题

regex - Dreamweaver 用正则表达式替换

regex - 在映射文件中对多列使用 ReplaceTextWithMapping

c# - 字符串替换 C# 中的变音符号

c# - string 删除所有字母