在Java中,有没有办法编写字符串文本而不必转义引号?

2022-08-31 08:22:18

假设您有一个字符串文本,其中包含很多引号。你可以把它们都逃出来,但这是一种痛苦,而且很难阅读。

在某些语言中,您可以执行以下操作:

foo = '"Hello, World"';

然而,在Java中,它用于s,所以你不能以这种方式使用它。某些语言具有解决此问题的语法。例如,在python中,你可以这样做:''charString

"""A pretty "convenient" string"""

Java有类似的东西吗?


答案 1

不,我一直对Java中缺乏不同的字符串字面语法感到恼火。

以下是我不时使用的技巧:

String myString = "using `backticks` instead of quotes".replace('`', '"');

我主要只为静态字段做这样的事情。由于它是静态的,因此在类初始化时调用字符串替换代码一次。因此,运行时性能损失几乎不存在,它使代码更加清晰。


答案 2

答案是否定的,证明存在于 Java 语言规范中:

  StringLiteral:
   "StringCharacters"

  StringCharacters:
   StringCharacter
   | StringCharacters StringCharacter

  StringCharacter:
   InputCharacter but not " or \
   | EscapeSequence

如您所见,a 可以仅被绑定,并且不能包含没有转义的特殊字符。StringLiteral"

旁注:您可以将Groovy嵌入到项目中,这将扩展Java的语法,允许您使用,并且.'''multi line string '''' "string with single quotes" '"string with ${variable}"