主要介绍js判断字符串长度的5个方法,并且区分中文和英文,需要的朋友可以参考下
" y' t* K) E' F+ ~目的:计算字符串长度(英文占1个字符,中文汉字占2个字符)/ W$ f& `" v- d
方法一: a1 t7 @$ P2 v' T8 Z& [7 f4 ]
代码如下:
4 x! f. t' u6 m" h, Y$ Q; Lstring.prototype.gblen = function() { ; y D4 C! g4 @. K4 ~
var len = 0; . I% t3 V6 P8 S- e$ X, C- h
for (var i=0; i<this.length; i++) { ; [) ]' S# S$ }, @* ]1 e. W3 [
if (this.charcodeat(i)>127 || this.charcodeat(i)==94) {
6 ^9 V# ~$ Q1 T9 ?) ` I len += 2; D, J6 i; U5 n* x5 K" j
} else {
6 A: n5 ~/ J6 ?1 K* }) f8 T len ++; , Z& A) i; h8 L6 V1 Q; A. x- h- D. r
} H2 L0 n8 {' i: b
} + B, s+ K0 v0 q
return len; 8 L( ]# d: G8 L% X5 S" r
}
. s: R0 |0 L7 T) C4 C方法二:
4 e: R# R7 a3 `3 M$ C6 i代码如下:function strlen(str){$ p+ G+ H$ r5 _, U2 e
var len = 0;
; z( _4 n3 Y9 ^4 A3 j! y for (var i=0; i<str.length; i++) { 5 z, }/ f9 y: P/ [( F3 W) j
var c = str.charcodeat(i); 5 p) A) ]+ n; x0 o$ T- ^4 e
//单字节加1
( \% F5 j* H1 f( L/ r. i% Y if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
, j) y- X( i( I+ J len++; 4 T1 `/ }5 C9 w) Q
} 7 s& L3 [1 S4 i" ~ {. H
else { ! B& k" h: G; N( Z) |! {
len+=2;
% r9 t5 ^" v: S/ a* x1 j, s } 9 x. i: R! p( G$ J( t
}
% ]# ]% b0 Y4 ^5 t return len; H. E/ f9 Q! G( |1 x3 s
}$ B4 P' R7 n7 C: Z% c9 d/ x' `5 f, w1 n
方法三:
/ d8 n" g, f9 E0 q+ X" X- H8 z代码如下:var jmz = {};# P/ W( h$ s0 s" j$ _0 r3 @
jmz.getlength = function(str) {5 }+ o: L8 | T# p: @* I# d
///<summary>获得字符串实际长度,中文2,英文1</summary>
2 }2 J4 f2 o) x" h, g ///<param name=str>要获得长度的字符串</param>
9 O: Q. b7 S8 Q* b& A var reallength = 0, len = str.length, charcode = -1;" T2 e; M" b$ G; }' [9 K
for (var i = 0; i < len; i++) {
6 q9 [+ ~2 P4 D3 s9 d/ q8 O charcode = str.charcodeat(i);% l* ?4 [/ k2 N4 A w
if (charcode >= 0 && charcode <= 128) reallength += 1;
5 N% ?& ?; s2 H else reallength += 2;
1 o5 g) u6 O. T+ L4 x: a }
# r4 t" i$ @5 Y2 L% o0 e( z return reallength;
* U( a# S! ~, P5 A+ H};
- G/ w. j: U( r2 Q x; r方法四:
% M/ m; ~4 }* C2 `代码如下:var l = str.length;
+ [& w# Q* b0 b' H1 d: i) ~* Gvar blen = 0;
E% c' i3 O+ J* t& P' @1 \for(i=0; i<l; i++) { 7 O$ e4 ?; x9 u+ _' a
if ((str.charcodeat(i) & 0xff00) != 0) {
/ f2 |2 f+ S1 V; T! X, Xblen ++; ' p0 Y- U) B0 ]
} : h8 b+ y! Q! Z w8 {* u. N
blen ++; n' Q$ q) h0 ~) C9 h7 b
}
0 E. F9 G* U9 U9 Y' @6 P% Q1 }方法五:
0 y% B6 d1 a( }4 b( A把双字节的替换成两个单字节的然后再获得长度 % @: i1 n1 n) O% `& o
代码如下:getblen = function(str) {
, X& [! G6 I; G o if (str == null) return 0;* k# v) r! S0 b1 i: j' o# s
if (typeof str != string){
' b8 Z" K. g% @$ E0 | str += ;
: [$ Y- I5 e5 N; F4 x }
& g# M, u$ q- v+ K; t j3 F return str.replace(/[^x00-xff]/g,01).length;
' B8 _; ]# [# e/ r}& x2 G6 H4 Y# L4 T: @) Y
: S3 Q( R+ k7 \3 g) t
更多网页制作信息请查看: 网页制作 |
|