自動目錄
前言
工作上遇到了字串處理的需求
以前自學程式的時候,沒特別注意到一些細節
今天遇到的狀況是:一個字串,有可能中英文混和,例如"王小明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;
}