鼓勵此網誌:0
在 javascript 中,常常會用 string.length 來判斷字串長度,
其真正是以「字數」為主,
不會因為 ASCII 或 UNICODE 而有差別。
也就是說「Hello」的值就是5,
「你好」的值就是2,不會變成4。
這樣當然是好事,
但現在有個需求是希望依據字的長度做切割,
避免字太長撐開原有版型;
然而如果依據「string.length」來判斷的話,
會發現
1234567890
一二三四五六七八九十
同樣得到的長度是 10,但實際寬度差很多。
這時候要算的就是 Byte 數。
網路上談論這個的文章很多,
特別推薦「[javascript]判斷中文全形字數有幾個」這篇,
介紹了三種計算方式,截錄如下:
一、使用 regular pattern
// \u4E00-\u9fa5 比對中文字 // [^\x00-\xff] 比對 UNICODE 字元 |
來自「Simple Thoughts on Everything: 用Regular Expression去檢查特殊文字」的好資料:
\u0800-\u4E00 (日文)
\u4E00-\u9fa5 (中文)
\u9fa5-\uFFFF (韓文或其他)
\u0080-\uFFFF 中日韓3byte以上的字符
\uFE30-\uFFA0 全型符號
二、使用 charCodeAt
for( i=0; i<string.length; i++ ){
|
- [javascript]判斷中文全形字數有幾個 | 小惡魔 - 電腦技術 - 生活日記 - 美食介紹 - AppleBOY
- 請問中文字位元數判斷
- 利用Byte單位來計算字串長度的幾種做法(Javascript,C#,VB.Net) - F6 Team- 點部落
- Simple Thoughts on Everything: 用Regular Expression去檢查特殊文字








