主要介绍js判断字符串长度的5个方法,并且区分中文和英文,需要的朋友可以参考下6 W8 |; H" f/ \/ m' @
目的:计算字符串长度(英文占1个字符,中文汉字占2个字符)5 o& ]2 A) ^' ^% A- e
方法一:0 N" u# S# Z5 Q8 Q S! F3 }
代码如下:
( p% m6 n p" f8 J, ^string.prototype.gblen = function() { . R4 H+ Q. W2 v
var len = 0;
7 r$ A" `2 Q, n* C/ ~3 J( V; w for (var i=0; i<this.length; i++) { ! f( I( f1 R9 }6 s: {. D& x
if (this.charcodeat(i)>127 || this.charcodeat(i)==94) {
* I/ z9 W9 e6 _( b3 R) x len += 2; 1 X$ o8 m& D! |6 j% i
} else { , M3 d4 `2 i" W$ ?, ^0 p
len ++; & L2 ^: V: P7 i8 H
} 1 j Y5 a- Q% S0 K6 W) I
}
3 ~. I# w& @4 D8 I5 u# t. b$ m return len;
$ z. k! e$ t% X& S}* O( m& C, Z. x$ `4 j- S8 l) i! ?
方法二:
0 C% r+ d8 N1 t代码如下:function strlen(str){5 M: d$ w" }& m0 H* Q
var len = 0;. ^! X5 Q6 q" n8 T: g
for (var i=0; i<str.length; i++) { 3 S( A4 ~# E' ^7 g
var c = str.charcodeat(i); 4 d9 C; \+ M5 h1 H; ~) F
//单字节加1 ( L9 C' T* n8 @+ R: W# k
if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) { 8 C2 {2 V2 W$ a" r, a
len++; ) @" n) J, a4 n% k
}
: w1 F7 ~* C- v else { # Y6 ] R+ q9 x, u, T9 Z
len+=2;
' h8 ^6 C6 r1 P d- k }
- h9 Z& i! J# z( O }
$ t: ~& e7 A2 Y+ g return len;# H* j3 }' |: e3 J
}; e& t/ { W( ]. }( R. }5 @
方法三:( R+ [( o1 s! P6 E, n0 u
代码如下:var jmz = {};
/ M& W% m9 B/ L t" R; |( q/ K( gjmz.getlength = function(str) {% s7 H$ u/ ~: ]7 v6 J# @8 n9 X+ _( B
///<summary>获得字符串实际长度,中文2,英文1</summary>% @3 f* S( u6 O" t ^! B
///<param name=str>要获得长度的字符串</param>
1 o3 Q+ z; ?! n! s( t% \+ K+ w2 E var reallength = 0, len = str.length, charcode = -1;
0 J3 i# G5 p' \" n4 f: v for (var i = 0; i < len; i++) {3 q( n$ x( C$ p0 m
charcode = str.charcodeat(i);$ l- u6 U7 i3 V; y6 V, V, x3 O& J
if (charcode >= 0 && charcode <= 128) reallength += 1;
& \. b& X3 y8 a" r6 B. Z% F# E8 q else reallength += 2;
1 M3 [ {( X( k! y! J( } }
* h1 T5 ~9 v6 ~7 j# k* X, c1 C& i( J return reallength;. _% o7 Z' q5 ?2 m+ z7 O
};
6 t) Q" |, F" b/ [$ Y- r方法四:1 w" V3 x% a# O& _ D
代码如下:var l = str.length; 6 Y7 L3 H; P& E( D/ R! u- p' o& I7 `
var blen = 0; ; F# N5 a) L+ M1 m1 A
for(i=0; i<l; i++) { . h2 d) |1 Y3 c, e# Z, E/ d/ ^
if ((str.charcodeat(i) & 0xff00) != 0) {
6 ^+ g r* L, d# j1 tblen ++; * U$ Z" p! J- e) ]
}
2 _* {/ }( u; E1 kblen ++; ; l0 O3 M, L: i) r3 Y8 K2 z* l
}
- B1 x5 W& @$ |& |# u8 D$ I方法五:
( x% B! f3 K: M0 x把双字节的替换成两个单字节的然后再获得长度
3 m' L0 j7 a9 _/ s( V5 R5 ]代码如下:getblen = function(str) {- K7 V) p ^- H7 ~7 P* @5 m
if (str == null) return 0;
% `- X! D8 I6 N if (typeof str != string){: W/ i9 K* n- _% J: l, S7 P
str += ;1 b! X7 k2 t7 N9 J2 j9 {! G2 R9 H, D
}
: W& H' h" n4 P6 B return str.replace(/[^x00-xff]/g,01).length;9 b1 F1 L8 r# Z9 W0 e# M. F
}
# Y5 ?) e+ y) S
7 ^4 ?- W$ A+ k2 W' J# r更多网页制作信息请查看: 网页制作 |
|