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


Answers:


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

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

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

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

还值得注意的是,您可以使用“ \ uxxxx”形式的Unicode转义序列在源代码中包含任意Unicode字符,其中“ x”是十六进制数字。但是,它们与普通的字符串和字符转义符不同,因为您可以在Java程序中的任何位置使用它们,而不仅仅是在字符串和字符常量中使用它们。见JLS部分3.13.23.3对在Java源代码使用Unicode的一个细节。

也可以看看:


有没有办法在Java中没有反斜杠,例如python中的三引号?
Lakindu Akash

2
不,没有。
斯蒂芬·C

9
char ch='"';

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

要么

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




3

添加实际的引号字符只是问题的一小部分。完成此操作后,您可能会遇到真正的问题:如果字符串已经包含引号,换行符或其他不可打印的字符,将会发生什么?

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

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构造函数。
斯蒂芬·C

@StephenC是的,当然。该答案的有用之处在于您提到的“(通常)”的补充。另外,该代码可能具有一定的教育意义。
Mike Nakis


1

有两种简单的方法:

  1. \在双引号前使用反斜杠。
  2. 使用两个单引号而不是双引号,例如 '' 代替"

例如:

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

4
Erm ...第二种方法不能解决问题。它正在改变问题。对于计算机或知识渊博的人,两个单引号与双引号并不意味着同一件事。
Stephen C


0

请注意,使用特定字符运行反斜杠时,需要注意一些特定事项。

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

上面的输出将是:

你好\


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

上面的输出将是:

你好”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.