Java中是否有'@'字符来转义字符串引号?

13

我的字符串中有双引号,在C#中我会这样做:

string blah = @"this is my ""text";

我该如何在Java中实现这个功能?


1
可能是Java中等价于C#的带有@的verbatim字符串的重复问题。 - mmmmmm
2
注意(Jan. 2018),原始字符串字面量可能会在Java (JDK 10或更高版本) 中出现: 参见在Java中,有没有一种方法可以编写一个无需转义引号的字符串文字? - VonC
3个回答

14
没有这样的功能是Java中没有提供的。
从Sun 文档中可以得到以下信息:

当在打印语句中遇到转义序列时,编译器会相应地解释它。例如,如果你想在引号中嵌套引号,必须使用转义序列 \" 来表示内部的引号。要打印下面这个句子

She said "Hello!" to me.

你需要写成如下形式:

System.out.println("She said \"Hello!\" to me.");

4

目前还没有类似的功能,但这是一个“已知修复”的增强请求。

  • Bug ID 4472509添加对vertabim(拼写错误)字符串字面量的支持

如果添加了此功能,则可以使用此类字符串字面量:

String qry = @"
   SELECT
     a.name, b.number
   FROM
     User a, Data b
   WHERE
     a.name = "James"
      AND
     a.id = b.id
";

一些评论基本上拒绝这个想法,因为它只是一种语法糖,但显然有很高的需求,所以有可能在未来某天我们会看到它。

6
我不明白因为某个特性只是语法糖就拒绝它的原因。让程序员不用写样板代码似乎是一种语言改进,使代码更简洁易懂。 - jeremy-george
2
这个答案中的bugs.sun.com链接目前已经失效了,它链接到一个Oracle页面,显示“此错误不可用”的消息。是否有当前版本的页面可用? - Jon Schneider

2

是的*(自2019年9月以来),但它使用了不同的语法。"""(三个双引号标记)。

*在更近期的Java版本中(+13作为预览版,+15作为生产就绪版),大多数等效内容可以通过Java文本块实现。

String html = """         
            <xml>
                <ody>
                    <pan>example xml </pan>
                </ody>
            </xml>""";

https://docs.oracle.com/en/java/javase/13/text_blocks/index.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接