我怎样才能使Java打印"Hello"
?
当我输入时System.out.print("Hello");
,输出将是Hello
。我正在寻找的是"Hello"
引号(""
)。
我怎样才能使Java打印"Hello"
?
当我输入时System.out.print("Hello");
,输出将是Hello
。我正在寻找的是"Hello"
引号(""
)。
Answers:
System.out.print("\"Hello\"");
Java字符串文字中的双引号字符必须用反斜杠转义。其他需要特殊处理的字符包括:
"\r"
和"\n"
"\\\\"
"\'"
"\t"
和"\f"
Java字符串和字符文字转义的完整列表可以在JLS的3.10.6节中找到。
还值得注意的是,您可以使用“ \ uxxxx”形式的Unicode转义序列在源代码中包含任意Unicode字符,其中“ x”是十六进制数字。但是,它们与普通的字符串和字符转义符不同,因为您可以在Java程序中的任何位置使用它们,而不仅仅是在字符串和字符常量中使用它们。见JLS部分3.1,3.2和3.3对在Java源代码使用Unicode的一个细节。
也可以看看:
在字符串中转义双引号: "\"Hello\""
有关该主题的更多信息(请参阅“转义序列”部分)
添加实际的引号字符只是问题的一小部分。完成此操作后,您可能会遇到真正的问题:如果字符串已经包含引号,换行符或其他不可打印的字符,将会发生什么?
以下方法将解决所有问题:
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
构造函数。
有两种简单的方法:
\
在双引号前使用反斜杠。''
代替"
例如:
System.out.println("\"Hello\"");
System.out.println("''Hello''");