Java:
การแทรกค่าลงในสตริง
วิธีการ:
Java ได้เ introduced String.format()
สำหรับการแทรกสตริง:
public class StringInterpolationExample {
public static void main(String[] args) {
String user = "Alice";
int points = 1337;
String greeting = String.format("Hi, %s! You have %d points.", user, points);
System.out.println(greeting);
}
}
ตัวอย่างผลลัพธ์:
Hi, Alice! You have 1337 points.
สำหรับการแทรกสตริงสมัยใหม่ตั้งแต่ Java 15, เราใช้ text blocks และ formatted()
:
public class ModernStringInterpolationExample {
public static void main(String[] args) {
String user = "Bob";
double accountBalance = 1234.56;
String message = """
Dear %s,
Your current balance is $%.2f.
""".formatted(user, accountBalance);
System.out.println(message);
}
}
ตัวอย่างผลลัพธ์:
Dear Bob,
Your current balance is $1234.56.
ลงลึก
ก่อนมีการแทรกสตริง, Java พึ่งพาการต่อสตริง: String greeting = "Hello, " + user + "!";
. เป็นอะไรที่ลำบากและเสี่ยงต่อข้อผิดพลาด, โดยเฉพาะเมื่อสตริงมีความซับซ้อน
ในอดีต, ภาษาเช่น Perl และ PHP มีการแทรกสตริง Java ตามทันในเวลาหลังมาก String.format()
และ PrintStream.printf()
เสนอความสามารถที่คล้ายกัน, โดยใช้ตัวกำหนดรูปแบบที่บอก Java วิธีการจัดการตัวแปร
ทางเลือกอื่น? นอกจาก String.format()
, เรายังมี MessageFormat
และ StringBuilder
, แต่พวกมันไม่สะดวกเหมือนกันสำหรับการแทรกสตริงพื้นฐาน ตั้งแต่ Java 15, text blocks ได้ทำให้สตริงหลายบรรทัดเรียบง่ายขึ้นและเพิ่ม formatted()
เพื่อง่ายต่อการแทรกสตริงโดยตรงในตำแหน่ง
ในแง่ของการทำงาน, String.format()
ใช้ Formatter
, เครื่องมือที่มีความสามารถมากมายในการจัดรูปแบบ แต่ระวัง, สตริงที่ซับซ้อนอาจทำให้ประสิทธิภาพแอปของคุณตกต่ำได้หากคุณไม่ระมัดระวัง