ใน Windows ใช้ \r\n (CRLF) เป็น line separator ใน Unix/Linux ใช้ \n (LF) Regex \\r?\\n จับคู่ทั้งสองรูปแบบ
เมธอด split() ของ String รับ regex แยกสตริงเป็นอาร์เรย์ токัน (คำ) โดยถือว่าข้อความระหว่างสอง match เป็นหนึ่ง token
ตัวอย่าง
import java.util.Scanner;
public class RegexExample {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Enter your input string: ");
String input = "sample text \r\n line1 \r\n line2 \r\n line3 \r\n line4";
String[] strArray = input.split("\\r?\\n");
for (int i = 0; i < strArray.length; i++) {
System.out.println(strArray[i]);
}
}
}
ผลลัพธ์
Enter your input string:
sample text
line1
line2
line3
line4
อธิบาย
\\r?\\n=\r(optional) ตามด้วย\n→ จับคู่ทั้ง\r\n(Windows) และ\n(Unix)split()ตัดที่ delimiter และคืนส่วนที่เหลือ- Space นำหน้าแต่ละบรรทัดยังคงอยู่ (เพราะ input มี space)
ปรับปรุง: ตัด whitespace นำหน้า
String[] lines = input.split("\\r?\\n");
for (int i = 0; i < lines.length; i++) {
System.out.println(lines[i].trim()); // ตัด space นำหน้า/ท้าย
}
วิธีอื่น: ใช้ Scanner
Scanner sc = new Scanner(input);
while (sc.hasNextLine()) {
System.out.println(sc.nextLine().trim());
}
sc.close();
สรุป Line Separators
| Platform | Line Ending | Regex |
|---|---|---|
| Windows | CRLF | \r\n |
| Unix/Linux/macOS | LF | \n |
| Classic Mac (OS 9) | CR | \r |
| Cross-platform | ทั้งสอง | \r?\n หรือ \r\n|\n |
Java System Property
String lineSeparator = System.lineSeparator(); // คืนค่าตาม platform
// Windows: \r\n, Unix: \n