首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

Java 計算字串長度:區分中英文字符(Unicode 範圍法)

     編輯:Java 程式設計入門

問題背景

Java String.length() 回傳的是 char 代碼單元數量。對於 BMP 範圍內的中文字(\u4E00~\u9FFF),每個字佔 1 個 char,但常見業務需求視「一個中文=兩個字元寬度」。

解法:掃描 Unicode 範圍

public static int getCharLength(String content) {
    int count = 0;
    for (int i = 0, len = content.length(); i < len; ++i) {
        char c = content.charAt(i);
        if ('\u4E00' <= c && c <= '\u9FFF') { // CJK 統一表意文字基本區
            count++;
        }
    }
    return content.length() + count; // 中文額外 +1,等同中文算 2、英文算 1
}

原理說明

  • \u4E00 ~ \u9FFF 涵蓋 20,902 個常用漢字
  • 遇到範圍內字符 count++,最終長度 = 原長度 + 中文字數
  • 其他編碼(Big5、GBK)同理,只需調整判斷範圍

補充提醒

  • 增補平面字符(Emoji、生僻字)佔 2 個 char(surrogate pair),若需精確視覺寬度請用 codePointCount 或 ICU4J
  • 嚴謹場景建議引入 java.text.BreakIterator 或 sun.font.FontDesignMetrics 計算像素寬度
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved