主要介绍js判断字符串长度的5个方法,并且区分中文和英文,需要的朋友可以参考下$ {, {' N: ~% D; K! z& [4 n2 ?2 m
目的:计算字符串长度(英文占1个字符,中文汉字占2个字符)
" N+ E, l. U% W8 W2 S& k方法一:
9 v+ D7 H6 i' z9 @5 z$ y代码如下:4 N# o' V x3 P9 @
string.prototype.gblen = function() {
( f* Z$ A$ f1 F: p+ C/ |' s7 V var len = 0; " w! x' }. f' D& N- c) N8 r
for (var i=0; i<this.length; i++) {
5 D: ?: e3 q7 Y @+ w if (this.charcodeat(i)>127 || this.charcodeat(i)==94) { 2 l4 t& {# V5 i5 X$ k
len += 2;
; W& E5 ~4 Z4 p% g } else {
' E: e( T- l# v7 p" Y$ A( U len ++; , d- V& t0 ~+ q' K; x
} 5 a/ ]. t6 T" E1 ~) A1 k
} 1 V1 S7 ~. A u7 d
return len; " B; t" U$ D1 a: M
}
+ j' G( a' w8 o方法二:: ~ Z: S8 G" _) e% _& d4 f
代码如下:function strlen(str){
& Y, k }3 R# Z5 x: l var len = 0;7 T) H U: s6 o/ C' r2 {0 n2 V
for (var i=0; i<str.length; i++) { " Z* d/ ?" J& N! T! e2 n6 y* X6 h2 K# ~
var c = str.charcodeat(i); 2 \: O$ N, B5 D
//单字节加1
- S4 Q/ F8 W1 Z if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
. {4 q0 Z! c& }1 s0 G len++; ; ]( O6 Q1 v4 A
} $ Y2 u1 n: r: M/ t- B
else {
- X8 u! g4 O6 i. z0 { len+=2; 6 m& Y2 D$ {+ \2 G) O
}
5 l* b. M9 _8 j/ V3 p: n4 p }
' T* {9 w8 P% E return len;
. I. z& I# {- d& v% Y: D0 k; d4 I}
! [4 f; T2 M$ w6 c方法三:. i T4 }; b, f7 ?4 A) o, E& Y5 a
代码如下:var jmz = {};' g f7 Q! O) T. Q5 o3 i
jmz.getlength = function(str) {! n- w( Y6 p* z) t. o
///<summary>获得字符串实际长度,中文2,英文1</summary>: z+ M# V2 p% K3 c7 i
///<param name=str>要获得长度的字符串</param>
) z4 o9 I8 a7 x: h9 y, m2 F9 Z! T/ t# J var reallength = 0, len = str.length, charcode = -1;
! f5 M3 `; P, `$ | for (var i = 0; i < len; i++) {
3 w- j0 O0 ^0 Q( W1 m" C charcode = str.charcodeat(i);% \1 W; l' w* ?0 @- w
if (charcode >= 0 && charcode <= 128) reallength += 1; i Z7 r" k) }6 G
else reallength += 2;5 u, B( E' i" z. H$ f; b$ F
}4 A W% x7 E" d( t4 f P4 C
return reallength;0 @7 y) x4 p! A$ `# Y' B& f
};6 Q. l# C! i' w% d& A K5 ?3 n
方法四:; u. @2 u7 x: d s% P
代码如下:var l = str.length; 0 p% V* `1 {, L t
var blen = 0; 1 D* d# t i$ u1 H. I3 s4 ^% L2 ^
for(i=0; i<l; i++) {
1 k# \) _6 R* fif ((str.charcodeat(i) & 0xff00) != 0) {
9 L" }) w1 q% h% Oblen ++; 9 A2 q+ I2 i, Q
} 6 f2 W+ @0 P- U2 K
blen ++; 5 P, E- q# f* ]# a
}
1 ]7 a6 _; p6 w p* u( r方法五:6 s. f/ O& T& q, C# ]
把双字节的替换成两个单字节的然后再获得长度 ( ^4 S! Q1 w/ k
代码如下:getblen = function(str) {
, n$ N/ ~7 ~) V! }8 G2 p if (str == null) return 0;
# P# B f% K5 ~8 l if (typeof str != string){, i5 e0 i: H( A9 R! S. T4 W- ]
str += ;! u& y l+ n9 T" R* J- G
}
0 i7 `! q7 W- d6 j N( F return str.replace(/[^x00-xff]/g,01).length;9 n f% c1 m% P/ s
}
" S. s u: f6 b& Y% \. r, k2 Y% ?2 A4 l5 j! s% o
更多网页制作信息请查看: 网页制作 |
|