// 依賴 commons-lang3 Listsports = Arrays.asList("籃球", "足球", "排球"); String joined = StringUtils.join(sports, ","); // "籃球,足球,排球" // 指定前綴/後綴 String wrapped = StringUtils.join(sports, ",", "[", "]"); // "[籃球,足球,排球]"
核心方法:`StringUtils.join(Iterable, separator)` / `join(Object[], separator)`
String str = "籃球,足球,排球";
// 1. 分割為數組(正則支援)
String[] arr = str.split("\\s*,\\s*"); // 兼容 "a, b ,c"
// 2. 數組轉 List(注意:返回固定大小 List,不可增刪)
List list = Arrays.asList(arr);
// 3. 若需可變 List,再包一層
List mutable = new ArrayList<>(list);
| 場景 | 錯誤做法 | 正確做法 |
|---|---|---|
| 分割含空白 | `split(",")` | `split("\\s*,\\s*")` |
| 需可變 List | 直接用 `Arrays.asList()` 增刪 | `new ArrayList<>(Arrays.asList(arr))` |
| 空字符串分割 | `"".split(",")` 返回 `[""]` | 先判空 `StringUtils.isBlank(str) ? Collections.emptyList() : ...` |
| 分隔符為特殊字符 | `split("|")` | `split("\\|")` 轉義 |
class User { String name; int age; /* getter/setter/toString */ }
List users = ...;
// 方案 1:Stream API (Java 8+)
String names = users.stream().map(User::getName).collect(Collectors.joining(","));
// 方案 2:StringUtils.join + 轉換器 (commons-lang3 3.11+)
String names = StringUtils.join(users, ",", u -> u.getName());