主要介绍js判断字符串长度的5个方法,并且区分中文和英文,需要的朋友可以参考下4 k2 O8 S2 z" m+ Z
目的:计算字符串长度(英文占1个字符,中文汉字占2个字符)
* j: B) Z' t. l/ q方法一:
% `7 }. Q3 {$ r代码如下:
9 l |9 S% I9 ?9 L; B# dstring.prototype.gblen = function() { 8 v8 f2 z% e: d- q# {9 b* _3 ?, [
var len = 0; ; b+ B* z& @1 L. m
for (var i=0; i<this.length; i++) { & h, [- q' ]. @% W; L
if (this.charcodeat(i)>127 || this.charcodeat(i)==94) {
3 Z) ]9 a; t. u0 P2 S+ l len += 2; ( ~3 i; \# ^& e1 i2 {+ ]% y0 P
} else { 9 }5 H& y4 Z4 N8 Y3 V
len ++; . I9 a" x5 C9 b( H( B
} & }5 @ m# y( G& J4 n1 X! ?
}
! O: X; |- U& z+ n. V! K2 V- g return len; , c, E2 @/ H9 e9 Z
}
0 c' I( q0 e3 r/ b3 g方法二:6 x4 A) t3 J" }4 f6 D8 ~% Z' l
代码如下:function strlen(str){
) a" n8 c2 s. T9 W5 ? var len = 0;/ K' O( T1 H( b: o& o
for (var i=0; i<str.length; i++) { 5 @3 I i/ Q5 }
var c = str.charcodeat(i);
: E; c1 E) p, N- D" D! \ //单字节加1
% v5 A: F3 ^) F: ^) H. l if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
5 h4 l% {; N( p( L# S | len++; 3 q* n7 m; ^, c( [# m
}
* W* G. E) w- f" |# M else {
3 T9 D0 Q/ h' n) L# O0 u len+=2;
: y4 ^* H1 A3 ^1 e9 o6 s } % j6 a0 N; V' ~& _- {' p2 [9 s! w
}
7 H1 a+ |- B( X( x; ?! P+ v. J, @ return len;
/ O2 e, E5 h. [1 }: {" N2 k}2 e( ~% A& M" \6 d% X: W# n
方法三:
9 k$ T5 x0 @! o' _% R& n$ A代码如下:var jmz = {};
# y# a: i. @5 x6 ~1 ^4 o; ojmz.getlength = function(str) {$ h6 O7 K( E0 O, C0 b+ @
///<summary>获得字符串实际长度,中文2,英文1</summary>
) U! K/ S1 J/ I2 { ///<param name=str>要获得长度的字符串</param>
( m% d5 c2 h& J% T7 o/ ` var reallength = 0, len = str.length, charcode = -1; J. r" X) O0 m
for (var i = 0; i < len; i++) {+ ~5 y n2 R1 P2 ~! T* a+ [
charcode = str.charcodeat(i);
6 V+ V- C; F; ?6 p8 m- W0 N7 T if (charcode >= 0 && charcode <= 128) reallength += 1;
; T' Q1 j$ o, b ] else reallength += 2;$ A( Y" f/ X. |( q1 ~0 z1 R
}
1 n* f9 M, X& x. L5 s* v return reallength;+ | |- E7 p+ U. P. e
};
, i2 K3 ^+ y9 W/ X$ [) Z& i方法四:
( O" [; W: O% ~( ]6 @& b代码如下:var l = str.length;
6 C4 H3 L+ ?1 O* ?4 Vvar blen = 0; 2 d6 v7 e( i' A! T k. V, E
for(i=0; i<l; i++) { - L- M6 P3 I* z. @: o5 t) O
if ((str.charcodeat(i) & 0xff00) != 0) {
! Z" H9 P& R) x! Rblen ++; / B! {; I6 ]* @% w# P
}
$ Z1 g% t# U; R8 t7 Hblen ++; 2 k' }& H' w; }/ m/ }+ P) ]* g, ~
}
6 [ P1 j8 ?8 O/ R" z# }, l! f1 ?$ a* s方法五:+ d6 Y4 `! o' D9 u
把双字节的替换成两个单字节的然后再获得长度 7 v& v l6 {) a F3 ]
代码如下:getblen = function(str) {
) }; s6 ?+ r; g/ Z- x if (str == null) return 0;, r3 S7 b$ B: M1 P
if (typeof str != string){
( \$ U: s/ ~* U% R* {7 d str += ;, ~8 z% B( D" k# R
}6 E$ D7 K; {% Y
return str.replace(/[^x00-xff]/g,01).length;
+ O! G2 u) w. U}
8 n+ L+ F. j: |
9 i: P" ?3 v4 \9 Q2 u5 F: k$ y更多网页制作信息请查看: 网页制作 |
|