我该如何让Java打印出"Hello"
?
当我输入System.out.print("Hello");
时,输出将是Hello
。我想要的是带有引号""
的"Hello"
。
我该如何让Java打印出"Hello"
?
当我输入System.out.print("Hello");
时,输出将是Hello
。我想要的是带有引号""
的"Hello"
。
System.out.print("\"Hello\"");
在Java字符串字面值中,双引号字符必须用反斜杠转义。其他需要特殊处理的字符包括:
"\r"
和 "\n"
"\\"
"\'"
"\t"
和 "\f"
Java字符串和字符文字转义的完整列表可以在JLS的第3.10.6节中找到。
值得注意的是,您可以使用形如\uxxxx
的Unicode转义序列在源代码中包含任意Unicode字符,其中x
为十六进制数字。然而,这些与普通字符串和字符转义不同,因为您可以在Java程序中的任何地方使用它们...而不仅仅是在字符串和字符文字中;有关在Java源代码中使用Unicode的详细信息,请参见JLS 3.1、3.2和3.3节。
另请参阅:
Oracle Java教程: 数字和字符串 - 字符
char ch='"';
System.out.println(ch + "String" + ch);
或者
System.out.println('"' + "ASHISH" + '"');
添加实际引号字符只是问题的一小部分; 一旦完成这个步骤,你可能会面临真正的问题: 如果字符串已经包含引号、换行符或其他不可打印字符怎么办?
以下方法将解决所有问题:
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();
}
PreparedStatement
,URL
和URI
构造函数。 - Stephen CSystem.out.println("\"Hello\"");
System.out.print('\u0022' + "Hello" + '\u0022');
\"Hello\"
,它仍然不太可读。 - Colin HebertSystem.out.println("\"Hello\"")
请注意,在使用反斜杠与特定字符一起运行时需要注意以下几点。
System.out.println("Hello\\\");
Hello\
System.out.println(" Hello\" ");
Hello"
\
。''
代替"
。System.out.println("\"Hello\"");
System.out.println("''Hello''");
\"Hello\"
这将打印出 "Hello"。