【问题标题】:In Java, should I escape a single quotation mark (') in String (double quoted)?在Java中,我应该在String(双引号)中转义单引号(')吗?
【发布时间】:2013-05-15 20:54:27
【问题描述】:

在Java中,\'表示单引号(单引号)字符,\"表示双引号(双引号)字符。

所以,String s = "I\'m a human."; 运行良好。

但是,String s = "I'm a human." 也不会产生任何编译错误。

同样,char c = '\"'; 有效,但 char c = '"'; 也有效。

在Java中,哪个更好用?在 HTML 或 CSS 中,style="font-family:'Arial Unicode MS';" 之类的东西更常见(对于此类标签,我认为这是使用引号的唯一方法),但在 Java 中,我通常看到人们使用转义字符,例如 "I\'m a human."

【问题讨论】:

  • 除非有保证,否则我不会使用斜线。所以"I'm a human." 没问题。
  • 我不太确定字符串中的单引号,因为我不会在那里使用一个引号。但我建议在字符中转义双引号,因为有时您稍后会决定更改您想要执行的操作并将字符变量更改为字符串。即当你发现你想用String.replace()替换多个字符时
  • 你试过测试吗?
  • 当字符串为英文时,还可以选择使用正确的英文引号,如'I’m a human'。无论使用什么字符串分隔符,这些标记都不需要转义。

标签: java string escaping character


【解决方案1】:

您无需转义字符串中的' 字符(包裹在" 中),也不必转义字符中的" 字符(包裹在' 中)。

【讨论】:

  • 但是你可以,而且是合法的,你说的是不是?
  • @Mishax 这很明显。转义字符的唯一用途是告诉编译器不要将字符('/") 视为结束字符。
  • @Bateman 我不同意你的说法 - 转义字符可以在字符串文字中使用 \n 来表示换行符或制表符的 \t 。我对 Cory Kendall 的暗示是,他的回答没有使用更准确的“合法但可选”之类的正式术语。
【解决方案2】:

最好的做法是只在需要时才转义引号 - 如果您可以在不转义的情况下逃脱,那就去做吧!

只有在尝试将" 放入字符串或将' 放入字符时,您才需要转义:

String quotes = "He said \"Hello, World!\"";
char quote = '\'';

【讨论】:

  • 嗯......它在哪里说这是“最佳实践”?还是您只是将您的个人偏好重新标记为“最佳实践”?
  • 例如,当我在一个大文件中进行搜索和替换时,我发现它很有用。今天我想替换 \" -> \' 明天我可能想做相反的事情。但是 ' -> \" 可能最终匹配我不想替换的案例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-20
  • 1970-01-01
  • 2015-11-06
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多