主要介绍js判断字符串长度的5个方法,并且区分中文和英文,需要的朋友可以参考下
1 ]4 c( A- z8 l目的:计算字符串长度(英文占1个字符,中文汉字占2个字符)
6 K) B4 _3 |* v# A方法一:
0 L) B3 ?" D" g; D9 M代码如下:7 z0 D" z/ a7 [1 K( Y
string.prototype.gblen = function() { " \6 Z. C! [* z/ b$ N# U5 h
var len = 0; 5 ?% S; L i. e; o% ?
for (var i=0; i<this.length; i++) {
8 ^9 i. ^' x C k if (this.charcodeat(i)>127 || this.charcodeat(i)==94) { 5 F5 y; I& n+ f4 |" ? V' T
len += 2; 7 R) ^3 Y8 \1 [
} else { 8 C2 v' e! m5 @: q# W
len ++;
& t" T- i# z6 v$ `7 e }
/ E+ q4 E# j2 A; y9 j }
" [" O/ m2 S7 ]. Z$ M6 ~ return len; & ~: h7 m5 W6 p" Z" H9 g
}
- b! V- s1 S( h F方法二:
. p. I. z4 o) k$ p$ K代码如下:function strlen(str){
( n- V; O; R% W& k% U( F/ N+ A4 }" ` var len = 0;" T1 |7 l/ M' f* c% b0 c1 ?
for (var i=0; i<str.length; i++) { ) N6 P1 p" ? f* {$ d
var c = str.charcodeat(i);
! J4 D7 e s% `+ o5 m) z- l //单字节加1
% ~! K: k' z' Z# `" y if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
3 t% m/ a) J3 v len++; * P( p6 o& x0 D/ r
} ; A2 g8 A. N8 ^
else { 6 i% l* x8 U# Z
len+=2;
/ m+ a. Y% R1 G6 C9 F }
; K" C; F: t7 ~ } . ~8 g2 {4 @, u9 k% W
return len;
, Q" H8 {# _3 \) S2 o5 G8 U}
7 v! v& U* Y$ \& y方法三:
2 R8 \$ r4 D1 K1 S代码如下:var jmz = {};) t! i9 P' K; [; u. |
jmz.getlength = function(str) {9 |/ C' B' K6 ~- @. `
///<summary>获得字符串实际长度,中文2,英文1</summary>0 j @- R5 _# }6 P2 I7 q: u
///<param name=str>要获得长度的字符串</param>
/ {7 B6 H ?* K3 w0 N var reallength = 0, len = str.length, charcode = -1;
7 C ~& ]* ~$ k; U for (var i = 0; i < len; i++) {
9 a- s6 ]5 w; J charcode = str.charcodeat(i);
! v/ f: o+ k; Z& g( j+ l if (charcode >= 0 && charcode <= 128) reallength += 1;
" I5 F( s4 {9 F+ Q; M/ @3 h else reallength += 2;
$ n8 |$ g/ f6 g z8 X0 \ }
, y- h# c: b6 V2 e+ ` return reallength;- ]) N' u$ }0 a# ~( O
};
) B/ V3 v+ j7 X, L8 m' ^( G& i" ?+ n方法四:
' e1 ~) P" b; X# U* p" H; \代码如下:var l = str.length;
) v8 F) U" `3 ~5 evar blen = 0;
; `6 r" A9 ]- `! F* u- kfor(i=0; i<l; i++) { 1 r: o: t) J. ^2 S' A, N7 c
if ((str.charcodeat(i) & 0xff00) != 0) {
! O+ h/ O9 [+ f# Cblen ++; 5 ~( K% k, h4 S v! ]; B! W6 t
}
# I! O E9 J) R Hblen ++;
7 Y3 }% _* V5 _: {: w}. E& t( J9 G- o
方法五:
0 }$ _; u5 i* ^# c把双字节的替换成两个单字节的然后再获得长度
' r/ _! U- F! t7 n L代码如下:getblen = function(str) {( s/ ]& a; S' ]7 R0 l4 }
if (str == null) return 0;
: p$ t2 X9 Z, W& \1 S) D if (typeof str != string){8 W m3 R4 q, G a) p
str += ;
- B6 j! E" p0 r) k2 R$ d" K$ n" @ }) a* Z8 t% A- h/ ~- s) |2 U
return str.replace(/[^x00-xff]/g,01).length;
( m+ {* Z5 T- }& X6 s/ ]}# s* S4 Z0 p6 d# p: @
5 S7 s$ D7 U' V& l# P
更多网页制作信息请查看: 网页制作 |
|