在Java中,有没有办法写一个string文字而不必转义引号?

假设你有一个带有大量引号的string文字。 你可以逃避一切,但这是一个痛苦,难以阅读。

在某些语言中,你可以这样做:

foo = '"Hello, World"'; 

然而,在Java中, ''用于char ,所以你不能以这种方式将它用于String 。 有些语言有解决这个问题的语法。 例如,在Python中,你可以这样做:

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

Java有类似的东西吗?

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

  StringLiteral: "StringCharacters" StringCharacters: StringCharacter | StringCharacters StringCharacter StringCharacter: InputCharacter but not " or \ | EscapeSequence 

正如你所看到的,一个StringLiteral可以被绑定" ,并且不能包含没有转义的特殊字符。

一个侧面说明:你可以在你的项目中embeddedGroovy ,这将扩展Java的语法,允许你使用'''multi line string '''' "string with single quotes" '以及' "string with single quotes" ' "string with ${variable}" ' "string with single quotes" ' "string with ${variable}"

不,我一直对Java缺乏不同的string文字感到恼火。

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

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

我主要只是做一些这样的静态字段。 由于它是静态的,因此在类的初始化时,stringreplace代码被调用一次。 所以运行时性能损失实际上是不存在的,并且使得代码更清晰易读。

你也可以使用Apache公共的StringEscapeUtils

更新 :如果有人有兴趣在这里的一些例子是一个有用的链接: http : //java.dzone.com/articles/commons-lang-3-improved-and-powerful-StringEscapeUtils

简单的回答:不。

对于必须转义的更长的string,我通常从外部资源读取它们。

以下似乎为我工作:

 String x = "Some Text" + '"' + "More Text" + '"' + "Even More Text"; 

我认为,因为char是String的原始variablestypes,string和字符可以组合(至lesseclipse编译器似乎没有抱怨)。

如果你想在string中'"转义,你可以使用下面的代码:

 String text = ... text = text.replaceAll("('|\")", "\\\\$1");