主要介绍js判断字符串长度的5个方法,并且区分中文和英文,需要的朋友可以参考下. y5 e' ?: N+ h
目的:计算字符串长度(英文占1个字符,中文汉字占2个字符)7 {7 h3 S. L7 f
方法一:. c: O6 R/ c, l6 \7 w
代码如下:9 e+ @ J& N9 ^1 p
string.prototype.gblen = function() { 2 c% J$ H6 P6 E% r! o4 O8 D
var len = 0; ( y3 Y( v& j, w, \
for (var i=0; i<this.length; i++) { . t/ V: C5 P9 S5 a) @2 y
if (this.charcodeat(i)>127 || this.charcodeat(i)==94) { ; E4 ]1 b6 S$ ^; Q3 q
len += 2;
8 _3 W; J/ O( C; i; V! Q, ~( H } else { & B: x/ r+ ^7 @' {$ H$ N" k
len ++; 1 c; ^+ @# G9 ]- Y! D( T: y
} 3 s5 R9 K% k6 _5 r
} & m: ?' V/ o7 x# F
return len;
2 B# `- G+ J/ B! ~5 c) f1 _- F}
3 J+ U" G- G+ c: h0 }方法二:9 t; X; K8 y3 y
代码如下:function strlen(str){( b: N4 l5 A/ Q
var len = 0;
5 @0 s) r" {" N' i8 ~8 q, r( J: d for (var i=0; i<str.length; i++) {
" W3 |# ?* w5 ~0 ?$ g. Q var c = str.charcodeat(i);
' k F6 V, W3 h" b* a% X5 u! @ //单字节加1 9 H% f* \. U& R, ]1 D. U
if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) { ; P2 T' L7 e. ~6 @& A
len++; ) t: [$ R/ H9 O* j
} ) v) h6 I7 _, _
else {
) i- d$ s# M( E' {* ^; G, Q len+=2;
6 r8 D) h" |6 L, Z! m' r } $ e1 G, s3 j, m4 V7 Q
} , X& q- X& c0 {
return len;
( @, {7 D! G, c* `}8 H* [5 Z( V) Q) u4 e" J+ P# @
方法三:
# r. ]% Q; N, N; K5 f- N代码如下:var jmz = {};
2 i5 n% k' z' t% P/ T8 vjmz.getlength = function(str) {
. H7 W) f' L/ ~( X- t% ] ///<summary>获得字符串实际长度,中文2,英文1</summary>2 S9 L" }" s9 a/ j8 l: @& |
///<param name=str>要获得长度的字符串</param>
4 [; R' c+ k2 G. V# Y- ? var reallength = 0, len = str.length, charcode = -1;3 B, N; j! y( [" K+ k$ X# \/ i
for (var i = 0; i < len; i++) {
% g5 |, J$ q1 |2 I- e; C1 Q8 [, J) @% Y& z charcode = str.charcodeat(i);
1 h* ?' @# G* x9 D; Z if (charcode >= 0 && charcode <= 128) reallength += 1;
" {; G( S A+ x else reallength += 2;0 k, C& W/ g d
}- r( z: U$ b1 U: g
return reallength; _$ S. p2 W( D- C+ ]1 \
};# n0 V7 X' i4 ?: V% y
方法四:4 A" a# L1 ?4 X" O" K+ X1 a+ N/ J4 x
代码如下:var l = str.length; ; \6 E" ?! X$ F$ w3 \7 R: Z
var blen = 0;
# D1 [ g2 {/ N6 D8 F* E: Cfor(i=0; i<l; i++) { $ R4 P+ K+ n- H8 ?' Z
if ((str.charcodeat(i) & 0xff00) != 0) {
/ v5 d0 H4 ~2 [$ ?% Zblen ++;
1 G: d: |. T+ r6 ~) k4 r}
) |# i g6 V, nblen ++; - ?! @. {" B! G6 h% i0 b! |0 d
}
" n2 S j8 r* i1 F, e方法五:; Q* J6 o6 y( s8 Z! H* Z1 C+ F1 F3 A
把双字节的替换成两个单字节的然后再获得长度
0 q/ e. |$ W1 T* d5 E4 Z& b代码如下:getblen = function(str) {0 ]! i. Q) O6 Q# q
if (str == null) return 0;
& o% C& r; w; U3 j$ m if (typeof str != string){4 F" X7 _2 J: H; P: b4 z2 L m/ g
str += ;
' A9 X6 R6 V3 ?" L }
* C$ C! y1 @1 N" ?% O( U% l" K2 ~* ~ return str.replace(/[^x00-xff]/g,01).length;
* G/ @6 U9 P" B7 n}4 }8 Q ~; _0 a Y
( R- f! m9 N. s# V0 ?; o
更多网页制作信息请查看: 网页制作 |
|