Java String trim()
trim() 方法用來去除字串前後的空白字元。
語法
string.trim()
string.strip() // Java 11+
string.stripLeading() // Java 11+
string.stripTrailing() // Java 11+
trim() 範例
String s = " Hello World ";
String trimmed = s.trim();
System.out.println("[" + trimmed + "]"); // [Hello World]
// 只去除前後空白,中間的空白保留
String s2 = " Hello World ";
System.out.println("[" + s2.trim() + "]"); // [Hello World]
trim() 會移除的字元
trim() 會移除 ASCII 值小於等於 32 的字元:
String s = " \t\n Hello \r\n ";
System.out.println("[" + s.trim() + "]"); // [Hello]
包括:空白、Tab (\t)、換行 (\n)、回車 (\r) 等。
strip() (Java 11+)
strip() 功能類似 trim(),但支援 Unicode 空白字元:
// Unicode 不間斷空格 (U+00A0)
String s = "\u00A0Hello\u00A0";
System.out.println("[" + s.trim() + "]"); // [ Hello ](trim 無法移除)
System.out.println("[" + s.strip() + "]"); // [Hello](strip 可以)
建議在 Java 11+ 使用 strip() 取代 trim()。
stripLeading() 和 stripTrailing()
只去除前面或後面的空白:
String s = " Hello World ";
// 只去除前面
System.out.println("[" + s.stripLeading() + "]");
// [Hello World ]
// 只去除後面
System.out.println("[" + s.stripTrailing() + "]");
// [ Hello World]
實際應用
清理使用者輸入
Scanner scanner = new Scanner(System.in);
System.out.print("請輸入姓名:");
String name = scanner.nextLine().trim();
if (name.isEmpty()) {
System.out.println("姓名不能為空");
}
處理檔案每行資料
String[] lines = {
" Alice ",
" Bob ",
" Charlie "
};
for (String line : lines) {
System.out.println(line.trim());
}
// Alice
// Bob
// Charlie
比較前先 trim
String input = " yes ";
String expected = "yes";
// 不 trim 會比較失敗
System.out.println(input.equals(expected)); // false
// trim 後比較
System.out.println(input.trim().equals(expected)); // true
移除所有空白
trim() 只移除前後空白,如果要移除所有空白:
String s = " Hello World ";
// 移除所有空白
String noSpaces = s.replaceAll("\\s", "");
System.out.println(noSpaces); // "HelloWorld"
// 壓縮多個空白為一個
String compressed = s.trim().replaceAll("\\s+", " ");
System.out.println(compressed); // "Hello World"
isBlank() (Java 11+)
檢查字串是否為空白(只包含空白字元):
String s1 = "";
String s2 = " ";
String s3 = " \t\n ";
String s4 = "Hello";
System.out.println(s1.isBlank()); // true
System.out.println(s2.isBlank()); // true
System.out.println(s3.isBlank()); // true
System.out.println(s4.isBlank()); // false
// isEmpty() vs isBlank()
System.out.println("".isEmpty()); // true
System.out.println("".isBlank()); // true
System.out.println(" ".isEmpty()); // false
System.out.println(" ".isBlank()); // true
indent() (Java 12+)
調整每行的縮排:
String s = "Line 1\nLine 2\nLine 3";
// 增加縮排
String indented = s.indent(4);
System.out.println(indented);
// Line 1
// Line 2
// Line 3
// 減少縮排
String s2 = " Hello\n World";
String dedented = s2.indent(-2);
System.out.println(dedented);
// Hello
// World