主要介绍js判断字符串长度的5个方法,并且区分中文和英文,需要的朋友可以参考下
* X* h( Q5 L2 y# G4 P) O目的:计算字符串长度(英文占1个字符,中文汉字占2个字符); E5 Y: ^. G5 m& a0 `( y
方法一:* Q4 r9 s! N) t. E5 ], H
代码如下:2 h I4 w% x. F
string.prototype.gblen = function() {
( S3 e. a6 }% ~1 \ var len = 0; ; m6 V n. x6 j. F3 w0 b
for (var i=0; i<this.length; i++) {
$ O$ r- T" E; x$ ~5 w) H if (this.charcodeat(i)>127 || this.charcodeat(i)==94) {
! J# u- H/ ~9 I5 W/ \ len += 2; 9 h, ~( A) ]4 C. l3 }1 I2 {
} else {
! P+ ^$ z. {2 p: Q len ++; 0 t: R% z5 D6 O" V. S
} 8 H6 O* L6 R( c9 N+ S8 d! I) o0 t
} 0 d' Z) z: _& M1 A! `
return len;
2 x$ \: Y3 c2 l1 @) U}7 v8 ?& \ q* M$ m& w- |% E
方法二:
4 v) C* z4 `3 g' _& |8 K代码如下:function strlen(str){
' I4 { z- C1 _$ t9 x! N7 o: X var len = 0;2 i. Z* H% N/ u
for (var i=0; i<str.length; i++) {
8 B" i+ L& M+ Z9 e' E& X) f var c = str.charcodeat(i); $ `& n4 P8 c9 V- D% b
//单字节加1
% @1 `& K% E$ c& k1 o9 g if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) { r3 H6 {+ h9 R9 D) o' J! _' }) y
len++;
! J1 |1 J w& d6 G% ]) J( _ } & v# m: _9 E; Q: q+ T& E
else { 2 Q7 g$ T% G; D7 q
len+=2;
u7 E3 e. x/ A. } } ( z+ N. c3 G0 [" D) @0 Q
}
; M% l* H [. l) h return len;
/ ^* n5 o- B' S. v6 I3 q7 [}
3 _: R* T0 t; o# ?- l" V方法三:
+ v( ` Y6 n& c8 p7 F; H; S代码如下:var jmz = {};
2 Z1 b- Z9 u4 h3 Cjmz.getlength = function(str) {
& i# X" m# h! Q- G3 I ///<summary>获得字符串实际长度,中文2,英文1</summary>4 q* G" x2 ]0 {1 f
///<param name=str>要获得长度的字符串</param>8 |: ?* b7 l* `) n
var reallength = 0, len = str.length, charcode = -1;
# \9 ?7 k* A5 \& k7 Q# _; ^0 [ for (var i = 0; i < len; i++) {
$ _5 I- |/ X5 b2 h( P charcode = str.charcodeat(i);7 {0 I2 F8 T7 V7 i* {6 |, A
if (charcode >= 0 && charcode <= 128) reallength += 1;" p7 c1 D4 t- I" k: I: k
else reallength += 2;
) W1 X4 E6 `7 w' r4 B. K }; V; }4 H2 s* F7 l; ]
return reallength;
" E6 t9 T) {! z0 V& m};/ ]% u" A! S& S& ?7 W) v
方法四:
" a/ L" O: s* ?& r6 ^5 f3 k代码如下:var l = str.length; 2 e5 n& ]( L" c' E
var blen = 0; : ?; Q; U) R' d
for(i=0; i<l; i++) { 4 B- V* p0 d- [5 ?& G4 B# A6 r
if ((str.charcodeat(i) & 0xff00) != 0) {
k' W, m+ q1 Q; M- O$ S3 l, g# ~blen ++;
% Y2 c O3 V5 N+ g1 U, W}
& X$ b& P$ E, W/ vblen ++; 9 x" d% `! L1 Y8 H8 B
}! X; e; Y# X+ F# p) p+ w2 f P
方法五:9 Q, M5 y$ r1 [: z! ]+ K
把双字节的替换成两个单字节的然后再获得长度
, S$ j- v* B; p% h( u- E代码如下:getblen = function(str) {
, h) Q, ^' I5 x/ ]4 w, T4 b' r" R2 ~ if (str == null) return 0;/ ?) q: @* M7 ~4 l
if (typeof str != string){
8 J% p H, H$ y1 J% K+ o1 A str += ;3 }9 _3 a5 I1 m! [ R3 t' T8 B( i4 C
}
/ q% u7 j8 C5 [4 _. y* H return str.replace(/[^x00-xff]/g,01).length;
8 E3 S, n. Z: i}: c* m+ x7 Z! K5 X+ e+ C5 F! U' i
4 X5 O9 @4 }& }0 `更多网页制作信息请查看: 网页制作 |
|