主要介绍js判断字符串长度的5个方法,并且区分中文和英文,需要的朋友可以参考下 c' {, u7 {; r; `' \ p0 b
目的:计算字符串长度(英文占1个字符,中文汉字占2个字符)
9 w( U% K3 G9 A# y6 G& i) l方法一:
0 f6 \4 Q0 D5 O# k代码如下:/ n, W1 S( u3 q+ W* e! v
string.prototype.gblen = function() { 3 S; C; O& m9 e' D3 b+ E
var len = 0;
) {9 N* R+ `, g5 {9 P H for (var i=0; i<this.length; i++) {
" l( X) A7 t) D& X) l' D3 X* \ if (this.charcodeat(i)>127 || this.charcodeat(i)==94) {
% s! I! m/ d. p len += 2; ) M4 i3 d# @" o* Q0 s+ ^& y
} else { : X% ]' A+ s9 E: O( R% a
len ++; 0 Y2 u2 J. X' X* O; D, b; y
}
$ T) p) @8 S& J B% d! ~ }
- L6 u# [3 \9 F4 e) i return len; 9 K; c: x Q, h& e% x: @
}1 S8 \6 J1 U& W7 K9 p1 p! Z
方法二:: M% P6 ~; p; l$ C7 d
代码如下:function strlen(str){' @( i* f# w X$ }9 D* ^
var len = 0;5 U" ?: n/ V, W( {3 q# {
for (var i=0; i<str.length; i++) {
& ?- f2 l8 F+ J8 ] var c = str.charcodeat(i);
2 d" X0 V+ r; F' a9 c1 m //单字节加1
5 w; B- Y6 H& T# ?+ v5 j if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) { ! j# m# c4 ]$ @0 l4 r
len++;
& T8 F; o0 H H9 i* Z } 6 U- V5 b9 E( i- ?, C8 E4 P
else {
9 N6 r4 {0 v5 O- ]4 m& | len+=2; # u1 c' G& U+ G, L
} $ `5 _8 n2 Y3 w) P
} ) Q# p) s5 k3 W. A/ w4 [+ f
return len;
4 {: u0 n U, K* Y} S' @& Y9 R+ J+ G( _) R
方法三:
) m' {; o, v0 l3 I! ]9 k代码如下:var jmz = {};1 j" c. h3 j: I$ l- H. {& s- E6 }
jmz.getlength = function(str) {
3 b P" L* P$ l" O6 f ///<summary>获得字符串实际长度,中文2,英文1</summary>* |6 B" d- X: y1 ? K3 F
///<param name=str>要获得长度的字符串</param>+ y' W9 W5 ]3 y$ P8 d* x$ V
var reallength = 0, len = str.length, charcode = -1;
& m: L4 x; Q! l# a- } for (var i = 0; i < len; i++) {9 e" @8 Z0 G" [
charcode = str.charcodeat(i);
- A8 d$ {5 f* X+ \- y( y if (charcode >= 0 && charcode <= 128) reallength += 1;
+ i4 ? F0 @: }. T else reallength += 2;
5 W1 B: U; M- S' r+ E% d7 l }
# ^/ S$ w/ p: @0 Y. Q return reallength;
, u0 W; D) ^" V1 m4 M) q4 \};2 q6 A- q) X' x1 E$ m8 G) Z
方法四: t" x& ]8 i+ e% I9 W, M
代码如下:var l = str.length;
* v; m# H' x( ]3 Rvar blen = 0;
: u3 C2 c+ i4 {2 L" ^4 S3 [6 Qfor(i=0; i<l; i++) { % O% f: L) B" w
if ((str.charcodeat(i) & 0xff00) != 0) { 3 |2 x# L) ^) ^
blen ++;
7 ]2 j4 q# a! C1 t J3 p} ' `' l+ A# W/ [ i
blen ++; & {! F. v0 m! ~! z
}
( X" K9 M! T3 D1 F! X+ b b方法五:
T& r" T" |: p$ c% U' ?把双字节的替换成两个单字节的然后再获得长度
# i: ?# a9 ]6 D% I( Y( E% q3 n代码如下:getblen = function(str) {
6 e8 V5 T0 k2 B% _# p if (str == null) return 0;- ^: r7 i. s% X2 j" v y4 n. h
if (typeof str != string){6 m" g1 u/ N2 w/ [% p
str += ;+ S8 Z% W/ \9 H
}
+ G: q8 F( A; f/ w" Z# }/ W! F; q! q return str.replace(/[^x00-xff]/g,01).length;8 y* k3 W: i4 a) z% `( F% \, a$ e8 q
}% a3 a Y% |! O7 T! h" N% g
9 g2 ?, z5 N9 E, r) E$ S
更多网页制作信息请查看: 网页制作 |
|