| 轉義序列 | Unicode 碼位 | 名稱 | 說明 |
\b | U+0008 | Backspace (BS) | 退格/Backspace |
\t | U+0009 | Horizontal Tab (HT) | 水平製表符/Tab |
\n | U+000A | Line Feed (LF) | 換行/新行 (Unix 換行符) |
\f | U+000C | Form Feed (FF) | 換頁/走紙 |
\r | U+000D | Carriage Return (CR) | 回車/歸位 (Mac OS 9 換行符) |
\" | U+0022 | Quotation Mark | 雙引號 |
\' | U+0027 | Apostrophe | 單引號 |
\\ | U+005C | Reverse Solidus | 反斜線 |
\ddd | - | Octal Escape | 1-3 位八進制 (如 \101 = 'A') |
\uxxxx | - | Unicode Escape | 4 位十六進制 (如 \u0041 = 'A') |
Java 中換行的跨平台寫法
// 方式 1:系統屬性 (推薦)
String newline = System.getProperty("line.separator"); // Windows: \r\n, Unix: \n
// 方式 2:Java 7+ 系統行分隔符
String newline = System.lineSeparator();
// 方式 3:String.format 格式化
String text = String.format("第一行%n第二行%n第三行"); // %n 自動對應平台換行
// 方式 4:PrintWriter/PrintStream 自動處理
PrintWriter pw = new PrintWriter(new FileWriter("test.txt"));
pw.println("第一行"); // 自動輸出平台換行符
pw.println("第二行");
常見場景處理建議
- 讀取文字檔:使用
BufferedReader.readLine() 自動處理 \n/\r\n/\r
- HTTP 協議:標頭必須以
\r\n 結束 (RFC 7230)
- Windows 文字檔互通:寫入時明確使用
\r\n 或 System.lineSeparator()
- 正則表達式匹配換行:
\\r?\\n|\\r 涵蓋三種格式
- GUI 文字區域:
JTextArea 內部統一用 \n,顯示時自動轉換
結語
理解硬/軟回車語義差異與平台編碼變化,是跨平台文字處理的基礎。Java 提供 System.lineSeparator() 抽象平台差異,配合標準 I/O 類別自動處理,開發者應避免硬編碼 \r\n 或 \n,確保應用在 Windows、Linux、Mac 上行為一致。
- 上一篇文章: Java RandomAccessFile 完全指南:隨機存取檔案的實戰技巧與範例
- 下一篇文章: Java URL 下載遠端檔案完整實作:HTTP/HTTPS/FTP 通用方案
Copyright ©
程式碼之家 All Rights Reserved