主要介绍js判断字符串长度的5个方法,并且区分中文和英文,需要的朋友可以参考下
9 l! o$ {- _; P. l目的:计算字符串长度(英文占1个字符,中文汉字占2个字符)
* { E. v1 O2 m8 Y# {0 L方法一:
9 n! e7 W( j) f代码如下:& ]/ A" r5 J( `1 \3 R
string.prototype.gblen = function() { + M0 B3 I8 I! ]3 c1 w. t+ U+ J* c! d
var len = 0;
$ q p& g a8 i4 n8 o for (var i=0; i<this.length; i++) { " a9 n- d9 \# }
if (this.charcodeat(i)>127 || this.charcodeat(i)==94) { ) O# {; Z4 l/ i
len += 2;
; P6 ~) V. z/ j3 G& z } else { 7 S- C: W! u7 C4 \8 |
len ++; 8 W( Y3 f; u; ^: R' g
}
" N- D8 N0 L0 A# F" ]2 C } + }! m6 u! n1 G3 b2 F' E7 e
return len; 9 R2 `" s8 V- J& C: |, a
}
# j% |" i6 m: [% B( j方法二:: w: b% G7 T, X: Q. r. K4 [
代码如下:function strlen(str){: o# z9 F6 e+ P9 Z2 G
var len = 0;
" P- K# D W! x9 ~9 d for (var i=0; i<str.length; i++) { / \) z- @( a3 `9 L5 }
var c = str.charcodeat(i);
0 `3 x* J3 ~! h& T4 j //单字节加1 6 x! ~0 v+ U% L8 G* L- ?, p/ @9 a5 A
if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
( `7 |- t, S) n( d- o len++; , C0 y( T1 I5 m% {
} : J: S8 o8 Q" T! Z" z% S
else { / Y) w# G4 |+ x; D" h, A) Y
len+=2; ! s3 I. i) I& i7 `
} + P) L6 R0 @3 P9 l: k
}
; Q0 X2 v) S! C/ ` return len;, Y0 X; ~- X& M& J. F6 s: P
}
. h$ ?! E2 h3 G2 p T4 C3 ?方法三:0 V" V% h+ c, D$ j
代码如下:var jmz = {};
, i" o7 W& @- N( Ejmz.getlength = function(str) {' \- H& d5 w$ n# ?
///<summary>获得字符串实际长度,中文2,英文1</summary>
8 H+ |3 l, _$ o ///<param name=str>要获得长度的字符串</param>1 W4 T& ]1 g+ q. U5 W7 g$ C+ O
var reallength = 0, len = str.length, charcode = -1;
1 v- U1 Q6 O, V H Q! o# \( M! y1 F for (var i = 0; i < len; i++) {
& K8 P5 o0 b+ a& x9 K& ~0 g: ?2 Y charcode = str.charcodeat(i);
$ {& o' M) }& ~% N if (charcode >= 0 && charcode <= 128) reallength += 1;
; R* m+ K! B2 }4 ]3 T# X* Z else reallength += 2;
% q: |+ v' V, e }7 L( Y6 f4 M. o/ R+ b Q
return reallength;! |, `! x+ O! u$ F- _; Y7 s$ D2 e
};* l% H; j# \" u
方法四:9 ?2 q4 p7 @3 o
代码如下:var l = str.length; : h( J# ^9 F! ], N0 J5 n
var blen = 0; $ Q' z8 f A% ^2 M; k. f
for(i=0; i<l; i++) { 0 h F/ L% [% m" J: g w5 p
if ((str.charcodeat(i) & 0xff00) != 0) {
! J9 n. o, N E' h8 }# r" Lblen ++; 7 P Z! A; k, g
} , ^0 k }1 K/ P* H' D+ M- X+ s) z
blen ++;
2 x( v8 }' [1 ~( m5 x/ Q q3 L }}. f4 j. b: o2 L3 U
方法五:
' E" r6 W3 R% |# H把双字节的替换成两个单字节的然后再获得长度
$ l( z. w6 [4 z代码如下:getblen = function(str) {
3 b4 @( ?" Z# w& U3 V0 F( P5 t% p if (str == null) return 0;$ P( B: E+ y2 t; ^8 t3 t# F
if (typeof str != string){
/ S" p& \/ |9 a. e6 O) M str += ;
4 i5 w0 j0 x- I/ P/ f. U d }
: }* [6 ~* }3 \& c+ C) \ return str.replace(/[^x00-xff]/g,01).length;$ G, _3 r% P0 V
}' O" k% I: C$ O; r8 `& I
0 ~8 A1 s, K" Y/ v' _. Q更多网页制作信息请查看: 网页制作 |
|