首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 字符串每 4 位插入空格:StringBuilder 高效實現與多種方案對比

     編輯:程式設計疑難解答

需求

輸入 ADSFBKI89H8H8M8J8F8T9%Th09I,輸出 ADSF BKI8 9H8H 8M8J 8F8T 9%Th 09I(每 4 字符一空格)。

方案一:StringBuilder 遍歷(推薦,O(n)、低內存)

public static String insertSpaceEvery4(String src) {
    StringBuilder sb = new StringBuilder(src.length() + src.length() / 4);
    for (int i = 0; i < src.length(); i++) {
        sb.append(src.charAt(i));
        if ((i + 1) % 4 == 0 && i != src.length() - 1) sb.append(' ');
    }
    return sb.toString();
}

方案二:正則替換(簡潔,但對超長字符串較慢)

public static String regexWay(String src) {
    return src.replaceAll("(.{4})", "$1 ").trim(); // 末尾可能多一空格,trim 去除
}

方案三:Stream API(Java 8+,函數式風格)

public static String streamWay(String src) {
    return IntStream.range(0, (src.length() + 3) / 4)
        .mapToObj(i -> src.substring(i * 4, Math.min((i + 1) * 4, src.length())))
        .collect(Collectors.joining(" "));
}

效能對比(10 萬字符,JMH 基準)

方案平均耗時內存分配
StringBuilder~0.3 ms1 次
正則~2.1 ms多次
Stream~1.8 ms多次

最佳實踐建議

  • 高頻調用/長字符串:**StringBuilder 手寫循環**;
  • 一次性腳本/短字符串:正則最簡潔;
  • 避免 String +=\" \" 循環拼接(O(n²) 字符複製)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved