• yam天空
  • 天空部落
  • 新聞
  • 登入 註冊 網誌隨便逛
  • 加入天空部落
  • 華文部落格大賞結果出爐!

網誌 相簿 影音 PK吧! Honda嬉遊趣
即時新聞 影音新聞 新聞專輯 政治新聞 財經新聞 娛樂新聞 運動新聞 兩岸新聞 科技新聞
管理介面 發表網誌 發表日記 上傳相片 上傳影音 管理留言
推薦這個部落格: 191

A HA! 心情雜物間

專供個人碎碎念的心得小屋,或是好物分享~~ ^_^

日記 |網誌 |相簿 |好友 |留言板
[CSS] 強迫斷行 | 主頁 | Batch script on Linux -- sh (Shell Script)
June 10, 2009
判斷中文字數以文找文
csylvia 在天空部落發表於14:48:07 | JavaScript
鼓勵此網誌:0 

在 javascript 中,常常會用 string.length 來判斷字串長度,
其真正是以「字數」為主,
不會因為 ASCII 或 UNICODE 而有差別。

也就是說「Hello」的值就是5,
「你好」的值就是2,不會變成4。


這樣當然是好事,
但現在有個需求是希望依據字的長度做切割,
避免字太長撐開原有版型;
然而如果依據「string.length」來判斷的話,
會發現

1234567890
一二三四五六七八九十

同樣得到的長度是 10,但實際寬度差很多。

這時候要算的就是 Byte 數。

網路上談論這個的文章很多,
特別推薦「[javascript]判斷中文全形字數有幾個」這篇,
介紹了三種計算方式,截錄如下:

 

一、使用 regular pattern

// \u4E00-\u9fa5 比對中文字
return word.split(/[\u4e00-\u9a05]/).length -1;

// [^\x00-\xff] 比對 UNICODE 字元
var arr = string.match(/[^\x00-\xff]/ig);  
return arr == null ? string.length : string.length + arr.length;

 

來自「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++ ){
         c = string.charCodeAt(i);
         if ( !( c>=32 && c<=126 ) )
                   iCount++;
}
return iCount;


// 這是我寫的,可以算 total bytes
// 不過沒測過多國語系~~XDb

for( i=0; i<string.length; i++ ) {
     c = string.charCodeAt( i );
     if( c <= 0x7f ) {
             iCount++;
     }
    else {
             iCount += 2;
     }
}
return iCount;

 

 

 

  • [javascript]判斷中文全形字數有幾個 | 小惡魔 - 電腦技術 - 生活日記 - 美食介紹 - AppleBOY
  • 請問中文字位元數判斷
  • 利用Byte單位來計算字串長度的幾種做法(Javascript,C#,VB.Net) - F6 Team- 點部落
  • Simple Thoughts on Everything: 用Regular Expression去檢查特殊文字

 

留言 (0) | 引用 (0) | 人氣 () | 轉寄
此分類上一篇:Communication between opener and subwin | 主頁 | 此分類下一篇:window.open with fullscreen
引用 (你可以針對此文寫一篇屬於自己的blog/想法,並給作者一個通告)
引用
留言 (0筆)
發表你的留言 (字數限制 最多 2000 個中文字)
私密留言: 是 否
Name:





是 否
內容:
系統公告
系統工具


Sylvia 小檔案
個人圖檔
ID:csylvia
暱稱:Sylvia
地區:臺北市
  • 訂閱 |
    • 我要訂閱此部落格的
    • 日記
    • 網誌
    • 相簿
  • 好友 |
    • 好友功能
    • 觀看好友列表
    • 觀看人緣列表
  • 人氣 |
  • 簡介 

文章分類
  • 生活資訊 (6)
    • 螢養保健 (11)
    • 小辭典 (13)
    • 飲食美味 (2)
    • 美容美髮 (2)
    • 體操按摩 (5)
    • 有用資訊 (10)
  • 資源連結 (4)
    • 資源整理 (12)
    • 噗浪 (8)
    • 介紹&推薦 (45)
    • BLOG小玩意 (44)
  • 真人電影 (4)
    • 電影介紹&推薦 (20)
    • 西洋電影 (35)
    • 東洋電影 (2)
    • 國片電影 (4)
  • 語言筆記 (3)
    • 英文 (4)
    • 其他語言 (1)
    • 日文 (6)
  • 創作欣賞 (7)
    • 串珠飾品 (12)
    • 毛線球 (2)
    • 文章 (1)
    • 設計 (2)
    • 不織布 DIY (5)
    • 其他創作 (1)
    • CG (8)
  • 電視影集 (3)
    • 綜藝節目 (7)
    • 紀錄片/連續劇 (11)
    • 經典影集 (12)
  • 科技資訊 (19)
    • C/C++ (58)
    • AJAX (37)
    • Code::Blocks 相關 (29)
    • WM5.0 (26)
    • Symbian (26)
    • ActiveX (22)
    • AIR (2)
    • ASP (9)
    • JavaScript (29)
    • FLASH (9)
    • 網頁相關 (8)
    • PHP (3)
    • Database (3)
    • 其他 (29)
    • Install (2)
    • SOAP (1)
    • VLC (14)
    • Linux 相關 (2)
    • Batch File (8)
  • 動漫遊戲 (3)
    • 西洋動漫 (9)
    • 其他動漫 (1)
    • 日本動漫 (22)
  • Amway (3)
    • 其他筆記 (0)
    • 智囊團 (0)
    • 紀錄 (4)
  • 個人記事 (6)
  • 書籍藝文 (29)
  • 話題探討 (28)
csylvia的最新的回應
  • Wesley:
    好久以前的東西,都忘光...
  • Wesley:
    妳真是好人
  • jamie:
    我也有類似的經驗,...
  • 小豬仔:
    Hi Sylvia,...
  • Anne:
    NANA...
  • Anne:
    嗯. ...
  • Anne:
    有去租來看過. ...
  • Anne:
    不過"窈窕野...
  • 小鼻:
    哈~!妳超力害的 ...
  • 小豬仔:
    Hello...
網站集結
迷你窩 miniworld
aNobii 書櫃
珍惜台灣
天下雜誌綠色行動4力串聯貼紙



台灣是我的國家

台灣貨‧暢其流
該推就是要推

禁虐

搶救生命 棄兒不捨!
天下雜誌台灣不願面對的真相貼紙



Chine Free

力挺泰山串聯貼紙
天氣
台北
-
RANKING
Google PageRank Checker



Free PageRank Meter for blog.webs-tv.net/csylvia
人氣指數
當日人次:
累積人次:
網誌搜尋
搜尋:
參觀者
RSS 訂閱


RSS 訂閱
RSS2
ATOM
贊助商
其它資訊
本部落所刊登之內容,皆由作者個人所提供,不代表 yam 天空 本身立場。
POWERED BY
POWERED BY 天空部落
會員登入│免費註冊