كيف يمكنني جعل عروض أسعار طباعة جافا ، مثل "مرحبا"؟
-
27-09-2019 - |
سؤال
كيف يمكنني جعل طباعة جافا "Hello"
?
عندما أكتب System.out.print("Hello");
سيكون الإخراج Hello
. ما أبحث عنه "Hello"
مع الاقتباسات (""
).
المحلول
System.out.print("\"Hello\"");
يجب الهروب من شخصية اقتباس مزدوج مع تراجع خلفي في سلسلة Java حرفية. تشمل الشخصيات الأخرى التي تحتاج إلى معاملة خاصة:
- عودة النقل والخط الجديد:
"\r"
و"\n"
- backslash:
"\\\\"
- اقتباس واحد:
"\'"
- علامة التبويب الأفقية وتغذية النموذج:
"\t"
و"\f"
يمكن العثور على القائمة الكاملة لسلسلة Java والهروب الحرفي في القسم 3.10.6 من JLS.
تجدر الإشارة أيضًا إلى أنه يمكنك تضمين أحرف Unicode التعسفية في الكود المصدري الخاص بك باستخدام تسلسل Unicode Escape لنموذج " uxxxx" حيث يكون "X" S Quexadecimal Sigits. ومع ذلك ، فهذه تختلف عن السلسلة العادية والشخصية التي تهرب من حيث يمكنك استخدامها في أي مكان في برنامج Java ... ليس فقط في الحرفية والأحرف الشخصية ؛ انظر أقسام JLS 3.1, 3.2 و 3.3 للحصول على تفاصيل حول استخدام Unicode في كود مصدر Java.
أنظر أيضا:
البرنامج التعليمي Oracle Java: الأرقام والسلاسل - الشخصيات
نصائح أخرى
char ch='"';
System.out.println(ch + "String" + ch);
أو
System.out.println('"' + "ASHISH" + '"');
الهروب من الربعات المزدوجة في سلسلتك: "\"Hello\""
المزيد عن الموضوع (تحقق من جزء "تسلسل الهروب")
يمكنك القيام بذلك باستخدام حرف Unicode أيضًا
System.out.print('\u0022' + "Hello" + '\u0022');
System.out.println("\"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();
}
System.out.println("\"Hello\"")
هناك طريقتان سهلين:
- استخدام backslash
\
قبل اقتباسات مزدوجة. - استخدم اقتباسين واحد بدلاً من اقتباسات مزدوجة مثل
''
بدلاً من"
فمثلا:
System.out.println("\"Hello\"");
System.out.println("''Hello''");
استخدم تسلسل الهروب.
\"Hello\"
هذا سوف يطبع "مرحبا".
لاحظ ، هناك بعض الأشياء التي يجب ملاحظتها عند الجري مع التراجعات المتخلفة بأحرف محددة.
System.out.println("Hello\\\");
سيكون الإخراج أعلاه:
مرحبًا
System.out.println(" Hello\" ");
سيكون الإخراج أعلاه:
مرحبًا"