[精讚] [會員登入]
382

[JavaScript] subString字串處理(支援中文與全形字符)

一個字串,有可能中英文混和,例如"王小明ab123",這個字串共有8個"字",但是存到資料庫裡面的話,他卻是11個"字元"

分享此文連結 //n.sfs.tw/15629

分享連結 [JavaScript] subString字串處理(支援中文與全形字符)@大塚 宏 ~認真玩・輕鬆學~
(文章歡迎轉載,務必尊重版權註明連結來源)
2022-03-03 21:10:49 最後編修
2022-03-03 15:08:16 By 大塚 宏
 

自動目錄

前言

工作上遇到了字串處理的需求

以前自學程式的時候,沒特別注意到一些細節

今天遇到的狀況是:一個字串,有可能中英文混和,例如"王小明ab123",這個字串共有8個"字"

但是存到資料庫裡面的話,他卻是11個"字元"

 

因為一個中文字(或是全形字)會占用2個字元

JavaScript當中,不論是中文還是英文,一個字就是一個字,導致字串處理上有點麻煩

 

還好網路上有查到解決方法,就是透過正則表達式,逐字判斷是否為中文

如果是中文,就計算2字元,否則計算1字元

順手把程式碼貼上來囉

程式碼分享

function subString(str, len, hasDot){ //subString 支援中文=2字元, hasDot = 字串最後方加上 '...'

    var newLength=0;

    var newStr="";

    var chineseRegex=/[^\x00-\xff]/g;

    var singleChar='';

    var strLength=str.replace(chineseRegex,'**').length;

 

    for(var i=0;i < strLength;i++){

        singleChar=str.charAt(i).toString();

 

        if(singleChar.match(chineseRegex) != null){

            newLength += 2;

        }else{

            newLength += 1;

        }

 

        if(newLength>len){

            break;

        }

        newStr += singleChar;

    }

 

    if(hasDot && strLength>len){

        newStr += '...';

    }

 

    return newStr;

}

 

END

你可能感興趣的文章

[JavaScript] subString字串處理(支援中文與全形字符) 一個字串,有可能中英文混和,例如"王小明ab123",這個字串共有8個"字",但是存到資料庫裡面的話,他卻是11個"字元"

計算友好數 var counter = 1; function find(num){ var a = num; var atotal

文章上鎖(TEST)、文字複製(判斷iOS) 文章上鎖(TEST)

動態文字框(TEST) 多邊文字框(TEST)

[jQuery] 一行搞定if判斷式 一行搞定if判斷式

[實用程式] 假文產生器 遇到一個設計表單的工作,需要一些隨機文字來填充欄位,測試排版是否整齊

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

[VB.NET] ComboBox 使用For迴圈移除項目 ComboBox 使用For迴圈移除項目,看起來很簡單,實際上會遇到什麼問題呢

[jQuery] 動態設定欄位是否啟用 $符號真的太萬用了~ 抓取元件變得輕鬆許多

[網賺] 我嘗試過的6種網路賺錢方式 能夠待在家,只透過網路就能賺錢,那該有多好啊

HTML-語意化標籤練習 2022/08/19代辦事項 看課外書 udemy線上課程 發布一篇文章

[寶可夢朱紫] Vtuber道館有獎挑戰賽 [活動分享] Vtuber道館有獎挑戰賽,開幕啦! 有興趣挑戰的訓練家們 請於每周二11:00~23:00 至「緋尹夜は