主要介绍js判断字符串长度的5个方法,并且区分中文和英文,需要的朋友可以参考下8 a* y4 N" ]1 F4 u+ M
目的:计算字符串长度(英文占1个字符,中文汉字占2个字符)
' c$ U' g& ~9 K' o8 Y# o+ W+ k方法一:
* y5 V. [+ y2 ?0 W代码如下:6 J- v. `( ~2 f' H- X R) }
string.prototype.gblen = function() {
# {. p% I6 {7 n2 j4 R4 u! n" | var len = 0; - l% ^! G; F( d2 T K% x1 O
for (var i=0; i<this.length; i++) { * Y+ B8 p% o5 M) E% M
if (this.charcodeat(i)>127 || this.charcodeat(i)==94) {
3 f, A* ]& u. ^, u. B8 z- Y# { len += 2; . G9 P1 I9 r1 j" |$ K9 u8 P
} else {
2 Z P! C) m/ @* V: m len ++; " ]0 E2 G' W: {) @9 E4 `$ s
}
7 v0 w4 C, d1 Y1 E } 0 h& J8 \: d2 X; @
return len;
& V# C% @" `8 e; ]}2 F- d# F/ \ Z
方法二:
5 [; F8 w, P5 m. M代码如下:function strlen(str){. _7 x+ v, n7 h! I e& ?
var len = 0;
) W( S! a0 Z& h- K* e' s+ Y y/ \ for (var i=0; i<str.length; i++) {
5 t/ ~! _% x0 T; F* r var c = str.charcodeat(i);
# l+ {+ K* M$ L; F) K) m5 j //单字节加1
. C9 y5 X) _* A- m/ j3 h4 N5 V. B if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
6 e* V( S/ t% V len++;
0 n6 R( m: R0 Q8 R3 J l2 q6 \ }
9 a) i6 f9 x$ u: ?6 P5 \ { else {
7 [; u1 h( x3 r! }3 e& Q len+=2;
$ z" H m% u! ~1 b } - `' {+ L q* K4 Q/ u
} 0 o( b) v1 p" m) A7 d6 R
return len;% h; T/ u8 U; B3 h x
}- v% K; c, Y* }6 J8 q. U1 M
方法三:. y# U' E4 k W! B+ @
代码如下:var jmz = {};2 D" c, o7 [4 A+ P+ _2 e. z
jmz.getlength = function(str) {) i4 Y2 A; A n8 V- ^! @( I6 P7 U
///<summary>获得字符串实际长度,中文2,英文1</summary>
- g4 w5 \8 `* k ///<param name=str>要获得长度的字符串</param>' b, i6 [* m2 T9 \* G' a; d
var reallength = 0, len = str.length, charcode = -1;
! P/ S: g6 j4 x' I# h. N2 w for (var i = 0; i < len; i++) {
, ]$ [5 w1 q4 p j& T7 b charcode = str.charcodeat(i);
0 H) u$ g/ z6 I9 ~" @5 A k if (charcode >= 0 && charcode <= 128) reallength += 1;
! s6 v# M% `6 L- ~# K. p else reallength += 2;
9 g0 K3 D8 v, I, c& U3 G2 i" K }6 L2 W6 @- d" K' k2 d8 P1 m
return reallength;$ ^4 Q6 D ?* w( e' O
};
/ R1 M8 j D! p2 O2 k" y" @方法四:
. T! t; K5 p' O: N3 J+ p: p代码如下:var l = str.length; 5 o" h2 b5 V/ N- `
var blen = 0;
& ~, \" j1 T3 _# r$ n' D; o! c8 L7 hfor(i=0; i<l; i++) {
" K8 _6 Y, b' ~* m% I! |% P. @if ((str.charcodeat(i) & 0xff00) != 0) { $ \" Y5 v( P& |4 G5 @, s
blen ++;
$ v J; h f5 z7 t. Z: c6 Q; s} ! H4 P3 q1 k/ a, ?
blen ++; 2 G& v4 R( O# G7 w# S9 @
}; w% }/ b6 J' ~
方法五:
: O( t+ B& f1 g) c& v把双字节的替换成两个单字节的然后再获得长度 |+ w( D; {. z0 q) E- B+ @
代码如下:getblen = function(str) {+ T# ^* ^2 U7 E& _$ r
if (str == null) return 0;
; u6 _; D4 O0 i. y' H if (typeof str != string){
6 ^2 o0 m, n! Z4 e$ g4 z str += ;
& c8 o9 Y& g' i" e% Y }
5 w" c% y! Z! e return str.replace(/[^x00-xff]/g,01).length;
/ f/ x. a q) a% }3 t1 f}
( E9 S, }4 D# C5 y" [
; k* P% f8 `. F: `更多网页制作信息请查看: 网页制作 |
|