正則表達(dá)式判斷是否存在中文和全角字符和判斷包含中文字符串長(zhǎng)度
更新時(shí)間:2008年09月27日 15:35:56 作者:
對(duì)于一些更安全的容錯(cuò)嚴(yán)重,需要用到
判斷是否存在中文和全角字符
str.match(/[^\x00-\xff]/ig)
判斷包含中文字符串長(zhǎng)度
aMatch=str.match(/[^\x00-\x80]/g);
str.length+(!aMatch?0:aMatch.length)
javascript 判斷中文字符長(zhǎng)度
一種:
function _length(str){
var len=0;
for(var i=0;i<str.length;i++){
if(str.charAt(i)>'~'){len+=2;}else{len++;}
}
return len;
}
二種:
String.prototype.gblen = function() {
var len = 0;
for (var i=0; i<this.length; i++) {
if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {
len += 2;
} else {
len ++;
}
}
return len;
}
String.prototype.gbtrim = function(len, s) {
var str = '';
var sp = s || '';
var len2 = 0;
for (var i=0; i<this.length; i++) {
if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {
len2 += 2;
} else {
len2 ++;
}
}
if (len2 <= len) {
return this;
}
len2 = 0;
len = (len > sp.length) ? len-sp.length: len;
for (var i=0; i<this.length; i++) {
if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {
len2 += 2;
} else {
len2 ++;
}
if (len2 > len) {
str += sp;
break;
}
str += this.charAt(i);
}
return str;
}
var str1 = '世上最牛的@#%&們 世上最牛的@#%&們';
document.write('str1 = '+ str1 +'
');
document.write('length = '+ str1.gblen() +'
');
document.write('gbtrim(10) = '+ str1.gbtrim(10) +'
');
document.write('gbtrim(10, \'…\') = '+ str1.gbtrim(10, '…') +'
');
document.write('gbtrim(12, \'-\' ) = '+ str1.gbtrim(12, '-') +'
');
// gbtrim(len 截取長(zhǎng)度,按英文字節(jié)長(zhǎng)度計(jì)算, s截取后的省略字符,如"…" )
// 備注: 這里中文字符都是當(dāng)作兩個(gè)長(zhǎng)度來(lái)計(jì)算的,所以gbtrim中的len為10時(shí),是顯示最多5個(gè)漢字的。
// 當(dāng)漢字?jǐn)?shù)大于5時(shí),由于截取后加上“…”,所以只顯示4個(gè)漢字。
str.match(/[^\x00-\xff]/ig)
判斷包含中文字符串長(zhǎng)度
aMatch=str.match(/[^\x00-\x80]/g);
str.length+(!aMatch?0:aMatch.length)
javascript 判斷中文字符長(zhǎng)度
一種:
復(fù)制代碼 代碼如下:
function _length(str){
var len=0;
for(var i=0;i<str.length;i++){
if(str.charAt(i)>'~'){len+=2;}else{len++;}
}
return len;
}
二種:
復(fù)制代碼 代碼如下:
String.prototype.gblen = function() {
var len = 0;
for (var i=0; i<this.length; i++) {
if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {
len += 2;
} else {
len ++;
}
}
return len;
}
String.prototype.gbtrim = function(len, s) {
var str = '';
var sp = s || '';
var len2 = 0;
for (var i=0; i<this.length; i++) {
if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {
len2 += 2;
} else {
len2 ++;
}
}
if (len2 <= len) {
return this;
}
len2 = 0;
len = (len > sp.length) ? len-sp.length: len;
for (var i=0; i<this.length; i++) {
if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {
len2 += 2;
} else {
len2 ++;
}
if (len2 > len) {
str += sp;
break;
}
str += this.charAt(i);
}
return str;
}
var str1 = '世上最牛的@#%&們 世上最牛的@#%&們';
document.write('str1 = '+ str1 +'
');
document.write('length = '+ str1.gblen() +'
');
document.write('gbtrim(10) = '+ str1.gbtrim(10) +'
');
document.write('gbtrim(10, \'…\') = '+ str1.gbtrim(10, '…') +'
');
document.write('gbtrim(12, \'-\' ) = '+ str1.gbtrim(12, '-') +'
');
// gbtrim(len 截取長(zhǎng)度,按英文字節(jié)長(zhǎng)度計(jì)算, s截取后的省略字符,如"…" )
// 備注: 這里中文字符都是當(dāng)作兩個(gè)長(zhǎng)度來(lái)計(jì)算的,所以gbtrim中的len為10時(shí),是顯示最多5個(gè)漢字的。
// 當(dāng)漢字?jǐn)?shù)大于5時(shí),由于截取后加上“…”,所以只顯示4個(gè)漢字。
相關(guān)文章
JavaScript設(shè)計(jì)模式之構(gòu)造函數(shù)模式實(shí)例教程
這篇文章主要介紹了JavaScript設(shè)計(jì)模式之構(gòu)造函數(shù)模式,結(jié)合實(shí)例形式分析了構(gòu)造函數(shù)模式的概念、功能、定義及使用方法,需要的朋友可以參考下2018-07-07用JS提交參數(shù)創(chuàng)建form表單在FireFox中遇到的問(wèn)題
在一個(gè)前端頁(yè)面上,需要通過(guò)JavaScript來(lái)提交參數(shù),使用JS創(chuàng)建form表單,將參數(shù)append到表單中進(jìn)行提交,接下來(lái)將介紹如何操作與實(shí)現(xiàn)2013-01-01使用threejs實(shí)現(xiàn)滾動(dòng)效果的示例代碼
某一天我在刷抖音時(shí),看到一個(gè)UI設(shè)計(jì)師分享了一個(gè)好看的網(wǎng)頁(yè)滾動(dòng)動(dòng)效設(shè)計(jì),那種飄逸流暢的動(dòng)畫(huà)效果立刻抓住了我的眼球,我腦海里立刻開(kāi)始想象用代碼如何實(shí)現(xiàn)這個(gè)效果,所以本文給大家分享了如何使用threejs實(shí)現(xiàn)滾動(dòng)效果,感興趣的朋友可以參考下2024-01-01小程序二次貝塞爾曲線(xiàn)實(shí)現(xiàn)購(gòu)物車(chē)商品曲線(xiàn)飛入效果
這篇文章主要介紹了小程序二次貝塞爾曲線(xiàn)實(shí)現(xiàn)購(gòu)物車(chē)商品曲線(xiàn)飛入效果,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01escape、encodeURI 和 encodeURIComponent 的區(qū)別
escape(), encodeURI()和encodeURIComponent()是在Javascript中用于編碼字符串的三個(gè)常用的方法,而他們之間的異同卻困擾了很多的Javascript初學(xué)者,今天我就在這里對(duì)這三個(gè)方法詳細(xì)地分析與比較一下。2009-03-03Electron點(diǎn)擊穿透不規(guī)則窗體的透明區(qū)域的實(shí)現(xiàn)
本文主要介紹了Electron點(diǎn)擊穿透不規(guī)則窗體的透明區(qū)域的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09