主要介绍js判断字符串长度的5个方法,并且区分中文和英文,需要的朋友可以参考下
9 ^2 m% T" v0 e! |4 u目的:计算字符串长度(英文占1个字符,中文汉字占2个字符)
# \$ T( b" I- K8 O3 \- s方法一: J: i: {$ Y1 L3 L/ b4 G
代码如下:
v5 B3 m0 A' pstring.prototype.gblen = function() {
: U* b& |& k- U var len = 0; ! y+ _+ t6 C9 l$ Q
for (var i=0; i<this.length; i++) { ) y3 u) T6 ^+ ^7 v* X
if (this.charcodeat(i)>127 || this.charcodeat(i)==94) { 6 H. N7 m- n" u0 h0 q: F# g
len += 2;
5 C! ?9 G: s7 l" t } else {
9 ]! e" Q% F3 s) H0 ~! o/ ^* k len ++; - {5 r% v- X5 B6 W- D
} & G, z5 D- z4 q. ^- F+ {: t5 H
}
# O+ w7 C. Z$ a: j return len; 9 z9 x2 A: n3 F
}* X. D6 |; y+ [' u( @* j! w8 }
方法二:8 b* l, F+ W4 E1 ?- Z" B, R# _2 d
代码如下:function strlen(str){; }& n( @' Y, W5 {
var len = 0;$ `# Z% G" j, o! f
for (var i=0; i<str.length; i++) { % C) d/ U: b: {! C6 c0 A0 S
var c = str.charcodeat(i); 3 _/ N2 D1 `& n# C$ {6 w! [
//单字节加1
# \7 ^9 Z4 d% d9 [+ f if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) { ; W# F8 g4 x8 `' y/ V
len++;
: y. v- I {) o1 @+ U } 4 _/ o. U, _) [: d% Z% q7 R8 h
else {
1 l- I: t/ ?9 K. X+ k+ ?# p& k len+=2; 9 d- ~, i" r3 }( E) n( c0 I
}
5 H0 A9 a- }: U" x1 @ }
}! |) H. t3 N) U( Q0 l8 p return len;
+ ~: x# U( I) p* ~/ F7 {( y7 t}
" T4 P, f( p$ ]8 o/ X- g方法三:
6 _6 ?. e! i' K, o/ P% M$ h代码如下:var jmz = {};
+ o7 |& ?# R% a5 J5 ^jmz.getlength = function(str) {! r" S$ R1 X* ]' a. [- ]
///<summary>获得字符串实际长度,中文2,英文1</summary>
* g7 Z% }. U3 X: X9 b ///<param name=str>要获得长度的字符串</param>6 f$ t% ^) c7 e. _: ^0 y
var reallength = 0, len = str.length, charcode = -1;& p' S, q Z: t! ~( i: R
for (var i = 0; i < len; i++) {
+ G& k) r3 C1 ^2 P- p, O* a' H charcode = str.charcodeat(i);
' I/ d: o3 p x if (charcode >= 0 && charcode <= 128) reallength += 1;
& \$ S$ N2 z0 y0 T: o else reallength += 2; K2 @& E1 _# x( f$ e
}
3 F# _; a- G/ j' c; C C return reallength;( y7 [, f1 w0 K
};
% m* w: w, b# t9 _8 b8 [方法四:
" r: Q, l, e: h2 N8 B' G% i代码如下:var l = str.length; 1 s S5 o2 p0 M& r( Y
var blen = 0; $ @% S4 p6 v; I, j( q
for(i=0; i<l; i++) { g; x7 p/ Z- |: A% _& L! e
if ((str.charcodeat(i) & 0xff00) != 0) {
4 X3 `- v' p8 b' }& p2 ^, ~2 Hblen ++; % o, b+ ~# `6 A" l
} . N7 T. G- Z7 \7 j. ]% ~
blen ++;
" P# [. v& n( z n7 @4 `}& H- d8 }! ~1 K
方法五:* L! _) O. U' ~, @
把双字节的替换成两个单字节的然后再获得长度 ' Y% i3 r' N" p
代码如下:getblen = function(str) {
# p/ _$ f( s. N& \& B if (str == null) return 0;- d: ?- w4 {& V3 A+ {. c1 S
if (typeof str != string){5 f5 U8 j- t7 V7 c; O6 D, X
str += ;9 k: T4 Y7 c" U y5 _2 u$ N
}5 G7 S V; _3 ~
return str.replace(/[^x00-xff]/g,01).length;6 H( m' I, p. @( ]4 k
}$ T9 Y9 J1 w1 a1 w! r% J
$ S3 O; H& b% B# u9 ~
更多网页制作信息请查看: 网页制作 |
|