由于javascript是unicode編碼的,所有的字符對于它來說一個就是一個,但是后臺程序不是,通常在后臺程序中一個中文是占兩個字節(jié)的,這就導致了前后端校驗長度不一致,這個問題可以通過正則來解決。
復制代碼 代碼如下:
function getRealLen( str ) {
return str.replace(/[^/x00-/xff]/g, '__').length; //這個把所有雙字節(jié)的都給匹配進去了
}
有時候為了美觀,不影響布局和界面,會以一些文案進行截字,但是中文的寬度和英文的寬度不一樣,如果按照英文標準來截中文的,或者按中文標準截英文的,顯然會忽長忽短,特別是昵稱這類容易既有中文又有英文的東西,同樣我們可以用上面的思路
復制代碼 代碼如下:
function beautySub( str, len) {
var reg = /[/u4e00-/u9fa5]/g, //專業(yè)匹配中文
slice = str.substring(0,len),
realen = len - ( ~~( slice.match(reg) && slice.match(reg).length ) );
return slice.substring(0, realen ? realen : 1);
}
新聞熱點
疑難解答
圖片精選