การแทรกค่าลงในสตริง

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, เครื่องมือที่มีความสามารถมากมายในการจัดรูปแบบ แต่ระวัง, สตริงที่ซับซ้อนอาจทำให้ประสิทธิภาพแอปของคุณตกต่ำได้หากคุณไม่ระมัดระวัง

ดูเพิ่มเติม