需求:將字串按指定字元長度切割成陣列,最後一段長度可能不足。
public String[] split(String str, int chars) {
// 計算分割段數:(長度 + chars - 1) / chars 等同向上取整
int n = (str.length() + chars - 1) / chars;
String[] ret = new String[n]; // 配置結果陣列
for (int i = 0; i < n; i++) { // 遍歷每一段
if (i < n - 1) {
// 非最後一段:固定長度 substring(起始, 結束)
ret[i] = str.substring(i * chars, (i + 1) * chars);
} else {
// 最後一段:從起始切到字串結尾
ret[i] = str.substring(i * chars);
}
}
return ret;
}
(len + chars - 1) / chars:整數運算實現向上取整,避免浮點數。substring(begin, end):end 為不包含的索引。// 使用正則表達式(. 代表任意字元)
String[] parts = str.split("(?<=\\G.{" + chars + "})");
手寫迴圈效能更穩定,且易於擴展(如補齊、編碼轉換)。