如何让Java打印引号,例如“Hello”?

92

我该如何让Java打印出"Hello"

当我输入System.out.print("Hello");时,输出将是Hello。我想要的是带有引号"""Hello"


11个回答

166
System.out.print("\"Hello\"");

在Java字符串字面值中,双引号字符必须用反斜杠转义。其他需要特殊处理的字符包括:

  • 回车和换行符:"\r""\n"
  • 反斜杠:"\\"
  • 单引号:"\'"
  • 水平制表符和换页符:"\t""\f"

Java字符串和字符文字转义的完整列表可以在JLS的第3.10.6节中找到。

值得注意的是,您可以使用形如\uxxxx的Unicode转义序列在源代码中包含任意Unicode字符,其中x为十六进制数字。然而,这些与普通字符串和字符转义不同,因为您可以在Java程序中的任何地方使用它们...而不仅仅是在字符串和字符文字中;有关在Java源代码中使用Unicode的详细信息,请参见JLS 3.13.23.3节。

另请参阅:


1
在Java中是否有像Python中的三重引号一样不需要使用反斜杠的方法? - Lakindu Akash
3
没有。 - Stephen C
实际上,从Java 13(2019年9月)开始,支持JEP 355文本块,这类似于Python的三引号字符串。 - Stephen C

11
char ch='"';

System.out.println(ch + "String" + ch);

或者

System.out.println('"' + "ASHISH" + '"');

7

在字符串中转义双引号:"\"Hello\""

更多相关主题(查看“转义序列”部分)


4

添加实际引号字符只是问题的一小部分; 一旦完成这个步骤,你可能会面临真正的问题: 如果字符串已经包含引号、换行符或其他不可打印字符怎么办?

以下方法将解决所有问题:

public static String escapeForJava( String value, boolean quote )
{
    StringBuilder builder = new StringBuilder();
    if( quote )
        builder.append( "\"" );
    for( char c : value.toCharArray() )
    {
        if( c == '\'' )
            builder.append( "\\'" );
        else if ( c == '\"' )
            builder.append( "\\\"" );
        else if( c == '\r' )
            builder.append( "\\r" );
        else if( c == '\n' )
            builder.append( "\\n" );
        else if( c == '\t' )
            builder.append( "\\t" );
        else if( c < 32 || c >= 127 )
            builder.append( String.format( "\\u%04x", (int)c ) );
        else
            builder.append( c );
    }
    if( quote )
        builder.append( "\"" );
    return builder.toString();
}

如果您确实需要这样做,通常更好的选择是使用现有的库方法(例如Apache Commons)来进行转义/反转义。或者利用API的能力来完成此操作;例如JDBC PreparedStatementURLURI构造函数。 - Stephen C
@StephenC 当然可以。这个答案的有用之处在于你提到的“(通常)”的补充。此外,这段代码可能具有一定的教育价值。 - Mike Nakis

4
System.out.println("\"Hello\""); 

4
您也可以使用Unicode字符来实现此操作。
System.out.print('\u0022' + "Hello" + '\u0022');

即使编译器将其简化为 \"Hello\",它仍然不太可读。 - Colin Hebert

2
System.out.println("\"Hello\"")

1

请注意,在使用反斜杠与特定字符一起运行时需要注意以下几点。

System.out.println("Hello\\\");

上述输出将是:

Hello\


System.out.println(" Hello\"  ");

上面的输出将是:

Hello"


1
有两种简单的方法:
  1. 在双引号前使用反斜杠\
  2. 使用两个单引号代替双引号,如''代替"
例如:
System.out.println("\"Hello\"");                       
System.out.println("''Hello''"); 

4
第二种方法并没有解决问题,而是改变了问题。在计算机或者有知识的人看来,两个单引号并不意味着与双引号相同的含义。 - Stephen C

0
使用转义序列。
\"Hello\"

这将打印出 "Hello"。


重复的答案 - Stephen C

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