ตกลงดังนั้นเราทุกคนควรรู้ว่าคุณสามารถรวมตัวแปรลงในสตริงได้โดยทำ:
String string = "A string " + aVariable;
มีวิธีทำดังนี้
String string = "A string {aVariable}";
กล่าวอีกนัยหนึ่ง:โดยไม่ต้องปิดเครื่องหมายคำพูดและเพิ่มเครื่องหมายบวก มันขี้เหร่มาก
ตกลงดังนั้นเราทุกคนควรรู้ว่าคุณสามารถรวมตัวแปรลงในสตริงได้โดยทำ:
String string = "A string " + aVariable;
มีวิธีทำดังนี้
String string = "A string {aVariable}";
กล่าวอีกนัยหนึ่ง:โดยไม่ต้องปิดเครื่องหมายคำพูดและเพิ่มเครื่องหมายบวก มันขี้เหร่มาก
คำตอบ:
คุณสามารถใช้ String.format (.... ) ได้ตลอดเวลา กล่าวคือ
String string = String.format("A String %s %2d", aStringVar, anIntVar);
ฉันไม่แน่ใจว่าสิ่งนั้นน่าสนใจเพียงพอสำหรับคุณหรือไม่ แต่ก็มีประโยชน์มากทีเดียว ไวยากรณ์จะเหมือนกับ printf และ java.util.Formatter ฉันใช้มันมากโดยเฉพาะอย่างยิ่งถ้าฉันต้องการแสดงข้อมูลตัวเลขแบบตาราง
formatมันน่าดึงดูดไปกว่านิพจน์การต่อสตริงธรรมดา ๆ อย่างไร สิ่งที่formatเป็นของตัวเองคือเมื่อคุณต้องทำการขยายการจัดรูปแบบตัวเลขและอื่น ๆ
1 + "oops") โดยเฉพาะอย่างยิ่งหากคุณใช้ FindBugs (ซึ่งจะแยกวิเคราะห์สตริงรูปแบบและพารามิเตอร์อินพุต) และอย่างที่ผู้ถามบอกว่าในหลาย ๆ กรณีมันอ่านง่ายกว่า แน่นอนว่ามันน่าเสียดายที่formatวิธีนี้ถูกทำให้คงที่ซึ่งเป็นความผิดพลาดในการออกแบบ
formatเกี่ยวข้องกับสตริงเป้าหมาย? แน่นอนคุณไม่ได้แนะนำว่าเราควรจะเขียน"A String %s %2d".format(aStringVar, anIntVar)... คุณ?
สิ่งนี้เรียกว่าการแก้ไขสตริง ไม่มีใน Java
แนวทางหนึ่งคือการใช้ String.format:
String string = String.format("A string %s", aVariable);
อีกวิธีหนึ่งคือการใช้ห้องสมุด templating เช่นความเร็วหรือFreeMarker
นอกจากนี้ให้พิจารณาjava.text.MessageFormatซึ่งใช้ไวยากรณ์ที่เกี่ยวข้องซึ่งมีดัชนีอาร์กิวเมนต์ตัวเลข ตัวอย่างเช่น,
String aVariable = "of ponies";
String string = MessageFormat.format("A string {0}.", aVariable);
ผลลัพธ์stringมีสิ่งต่อไปนี้:
A string of ponies.
โดยทั่วไปคลาสจะใช้สำหรับการจัดรูปแบบตัวเลขและชั่วคราว ตัวอย่างของJFreeChartการจัดรูปแบบฉลากอธิบายไว้ที่นี่ ; คลาสจะจัดRCInfoรูปแบบบานหน้าต่างสถานะของเกม
คุณสามารถใช้รูปแบบ String เพื่อรวมตัวแปรภายในสตริง
ฉันใช้รหัสนี้เพื่อรวม 2 ตัวแปรในสตริง:
สตริง myString = String.format ("นี่คือสตริงของฉัน% s% 2d", variable1Name, variable2Name);