Java String.stripIndent: ตัดเยื้องร่วมของบล็อกข้อความ
น้องกายEngineering
วาง SQL / HTML / JSON ในโค้ดแล้วเยื้องตามคลาสจนสตริงเต็มไปด้วยช่องว่างนำหน้าไหมครับ — String.stripIndent() ตัดเยื้องร่วมต่ำสุดของทุกบรรทัด (รวมบรรทัดท้าย) ออกให้
ใช้คู่ text blocks ("""...""") ได้ดี: เขียนให้อ่านในไฟล์ Java สวย แล้ว stripIndent() ก่อนส่งต่อ
public class Main {
public static void main(String[] args) {
String block = """
line1
indented
line3
""".stripIndent();
String expected = "line1\n indented\nline3\n";
assert block.equals(expected) : block;
System.out.println("ok");
}
}
หมายเหตุ: บรรทัดที่ว่างทั้งหมดถูกตัดเยื้องต่างจากบรรทัดที่มีเนื้อหาเล็กน้อย — อ่าน Javadoc ก่อนพึ่งในพาร์เซอร์เข้มงวด
Recap
- ใช้
stripIndent()หลัง text block ก่อนส่งสตริงออกนอกคลาส - อย่าสับสนกับ
strip()/trim()ที่ตัดหัวท้ายทั้งสตริง - เทสต์กับเคสมีบรรทัดว่างและแท็บถ้าพาร์เซอร์อ่อนไหว