替换不是替换 Java 中的双引号

Nas*_*eem 0 java replace

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

Hotel “Lowest Rate Guaranteed” Terms and Conditions
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下行替换上述语句中的双引号:

Tempdata = Tempdata.replace("\"", "");
System.out.println(Tempdata);
Run Code Online (Sandbox Code Playgroud)

它不起作用并且总是返回相同的值,但是如果我手动删除上面的双引号并手动输入双引号并尝试相同的命令,它可以正常工作。

手动替换双引号后,字符串看起来像

Tempdata = Tempdata.replace("\"", "");
System.out.println(Tempdata);
Run Code Online (Sandbox Code Playgroud)

我们可以看到双引号有细微的差别。看起来来自应用程序的双引号是 utf-8。

感谢任何帮助。谢谢

Ins*_*iac 5

您可以将双引号复制到替换中,相应的代码是\u201c\u201d

或者,您可以使用正则表达式[\"'\u2018\u2019\u201c\u201d]来匹配所有引号。(但是这些字符经常被误用为引号。我在看着你,“严肃而尖锐”)

在哪里

  • " 火柴 "
  • ' 火柴 '
  • \u2018匹配(左单引号)
  • \u2019匹配(右单引号)
  • \u201c匹配(左双引号)
  • \u201d匹配(右双引号)

这方面的一个例子可能只是使用String.replaceAll()

tempdata = tempdata.replaceAll("[\"'\u2018\u2019\u201c\u201d]", "")
Run Code Online (Sandbox Code Playgroud)

或者,如果您需要经常这样做,编译模式并保存会更有效:

在你班级的某个地方:

private final Pattern quotation = Pattern.compile("[\"'\u2018\u2019\u201c\u201d]") 
Run Code Online (Sandbox Code Playgroud)

然后进一步向下:

quotation.matcher(tempdata).replaceAll("")
Run Code Online (Sandbox Code Playgroud)

在一个不相关的说明中,不要在 Java 中给变量大写名称,它会灼伤我的眼睛并且违反所有常见的约定。给它们起与类相同的名称是非常邪恶的。