Wie kann ich Java-Druckzitate wie "Hallo" erstellen?

75

Wie kann ich Java drucken lassen "Hello"?

Wenn ich tippe, wird System.out.print("Hello");die Ausgabe sein Hello. Was ich suche, ist "Hello"mit den Anführungszeichen ( "").

Roy
quelle

Antworten:

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

Das doppelte Anführungszeichen muss mit einem Backslash in einem Java-String-Literal maskiert werden. Andere Charaktere, die einer besonderen Behandlung bedürfen, sind:

  • Wagenrücklauf und Zeilenumbruch: "\r"und"\n"
  • Backslash: "\\\\"
  • Einfaches Zitat: "\'"
  • Horizontale Registerkarte und Formularvorschub: "\t"und"\f"

Die vollständige Liste der Escapezeichen für Java-Zeichenfolgen und Zeichenliterale finden Sie in Abschnitt 3.10.6 des JLS.

Es ist auch erwähnenswert, dass Sie beliebige Unicode-Zeichen in Ihren Quellcode einfügen können, indem Sie Unicode-Escape-Sequenzen der Form "\ uxxxx" verwenden, wobei die "x" hexadezimale Ziffern sind. Diese unterscheiden sich jedoch von normalen Zeichenfolgen- und Zeichen-Escapezeichen darin, dass Sie sie überall in einem Java-Programm verwenden können ... nicht nur in Zeichenfolgen- und Zeichenliteralen. Weitere Informationen zur Verwendung von Unicode im Java-Quellcode finden Sie in den JLS-Abschnitten 3.1 , 3.2 und 3.3 .

Siehe auch:

Stephen C.
quelle
Gibt es einen Weg ohne Backslashes in Java wie dreifache Anführungszeichen in Python?
Lakindu Akash
2
Nein, gibt es nicht.
Stephen C
9
char ch='"';

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

Oder

System.out.println('"' + "ASHISH" + '"');
Akmishra
quelle
7

Entkomme doppelte Anführungszeichen in deiner Zeichenfolge: "\"Hello\""

Mehr zum Thema (siehe Teil 'Escape Sequences')

Nikita Rybak
quelle
4

Sie können dies auch mit einem Unicode-Zeichen tun

System.out.print('\u0022' + "Hello" + '\u0022');
Sadananda Salam
quelle
Auch wenn der Compiler dies vereinfacht, \"Hello\"ist es nicht wirklich lesbar.
Colin Hebert
4
System.out.println("\"Hello\""); 
Dhananjay
quelle
3

Das Hinzufügen der tatsächlichen Anführungszeichen ist nur ein winziger Bruchteil des Problems. Sobald Sie dies getan haben, werden Sie wahrscheinlich vor dem eigentlichen Problem stehen: Was passiert, wenn die Zeichenfolge bereits Anführungszeichen, Zeilenvorschübe oder andere nicht druckbare Zeichen enthält?

Die folgende Methode kümmert sich um alles:

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();
}
Mike Nakis
quelle
Wenn Sie dies tun müssen, besteht eine (normalerweise) bessere Alternative dazu darin, eine vorhandene Bibliotheksmethode (z. B. Apache Commons) zu verwenden, um das Escape- / De-Escape-Verfahren durchzuführen. Oder nutzen Sie die Fähigkeit einer API, dies zu tun. zB JDBC PreparedStatement, die URLund URIKonstruktoren.
Stephen C
@ StephenC ja natürlich. Der Nutzen dieser Antwort liegt nur in der Ergänzung des von Ihnen erwähnten "(normalerweise)". Außerdem kann der Code einen gewissen pädagogischen Wert haben.
Mike Nakis
2
System.out.println("\"Hello\"")
keshav84
quelle
1

Es gibt zwei einfache Methoden:

  1. Verwenden Sie einen umgekehrten Schrägstrich \vor doppelten Anführungszeichen.
  2. Verwenden Sie zwei einfache Anführungszeichen anstelle von doppelten Anführungszeichen wie '' anstelle von"

Zum Beispiel:

System.out.println("\"Hello\"");                       
System.out.println("''Hello''"); 
Atishay Jain
quelle
4
Ähm ... der zweite Ansatz löst das Problem nicht. Es ändert das Problem. Zwei einfache Anführungszeichen bedeuten nicht dasselbe wie ein doppeltes Anführungszeichen ... für einen Computer oder eine sachkundige Person.
Stephen C
0

Verwenden Sie die Escape-Sequenz.

\"Hello\"

Dies wird "Hallo" drucken.

Logan
quelle
Doppelte Antwort
Stephen C
0

Beachten Sie, dass beim Ausführen von Backslashes mit bestimmten Zeichen einige bestimmte Dinge zu beachten sind.

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

Die obige Ausgabe lautet:

Hallo\


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

Die obige Ausgabe lautet:

Hallo"

user3185910
quelle