我怎样才能使 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 节中找到。
还值得注意的是,您可以使用 Unicode 转义序列在源代码中包含任意 Unicode 字符,\uxxxx
其中x
s 是十六进制数字。但是,它们与普通的字符串和字符转义不同,因为您可以在 Java 程序的任何地方使用它们……不仅仅是在字符串和字符文字中;有关在 Java 源代码中使用 Unicode 的详细信息,请参阅 JLS 第3.1、3.2和3.3节。
也可以看看:
Oracle Java 教程:数字和字符串 - 字符
在 Java 中,有没有办法编写字符串文字而不必转义引号? (答案:没有)
char ch='"';
System.out.println(ch + "String" + ch);
或者
System.out.println('"' + "ASHISH" + '"');
转义字符串中的双引号:"\"Hello\""
有关该主题的更多信息(检查“转义序列”部分)
System.out.println("\"Hello\"");
您也可以使用 unicode 字符来执行此操作
System.out.print('\u0022' + "Hello" + '\u0022');
添加实际的引号字符只是问题的一小部分;一旦你这样做了,你可能会面临真正的问题:如果字符串已经包含引号、换行符或其他不可打印的字符会怎样?
以下方法将处理所有事情:
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();
}
System.out.println("\"Hello\"")
有两种简单的方法:
\
在双引号前使用反斜杠。''
代替"
例如:
System.out.println("\"Hello\"");
System.out.println("''Hello''");
请注意,在使用特定字符运行反斜杠时需要注意一些事项。
System.out.println("Hello\\\");
上面的输出将是:
你好\
System.out.println(" Hello\" ");
上面的输出将是:
你好”
使用转义序列。
\"Hello\"
这将打印“你好”。
您可以使用 json 序列化工具来引用 java 字符串。
像这样:
public class Test{
public static String quote(String a){
return JSON.toJsonString(a)
}
}
如果输入是:hello
输出将是:"hello"
如果你想自己实现这个功能:
它可能是这样的:
public static String quotes(String origin) {
// 所有的 \ -> \\ 用正则表达为: \\ => \\\\" 再用双引号quote起来: \\\\ ==> \\\\\\\\"
origin = origin.replaceAll("\\\\", "\\\\\\\\");
// " -> \" regExt: \" => \\\" quote to param: \\\" ==> \\\\\\\"
origin = origin.replaceAll("\"", "\\\\\\\"");
// carriage return: -> \n \\\n
origin = origin.replaceAll("\\n", "\\\\\\n");
// tab -> \t
origin = origin.replaceAll("\\t", "\\\\\\t");
return origin;
}
上面的实现将引用字符串中的转义字符,但不包括"
开头和结尾的。
上面的实现是不完整的。如果您需要其他转义字符,您可以添加它。