得知互动

标题: js判断字符串长度的5个方法 [打印本页]

作者: swmozowtfl    时间: 2015-7-9 23:23
标题: js判断字符串长度的5个方法
主要介绍js判断字符串长度的5个方法,并且区分中文和英文,需要的朋友可以参考下( P3 [& ?$ u  K# L) z) x
目的:计算字符串长度(英文占1个字符,中文汉字占2个字符)3 k' K  R8 K3 ?" ~
方法一:# [0 B) \* z7 i* @2 Q  W* A
代码如下:
5 Y8 @- ~: o7 }3 W- J
string.prototype.gblen = function() { ! w6 v2 G4 _" s/ i6 ]  Y
var len = 0; ' C' k$ {4 f& V4 v: j6 N
for (var i=0; i<this.length; i++) { - P0 g2 ?% ?8 E% }7 I" S
if (this.charcodeat(i)>127 || this.charcodeat(i)==94) { 9 X( M4 G/ ^; l) I
len += 2;
( F5 H. G* B7 \4 d* I- S: j& R, h } else { - I9 I) G; o* s; L( J
len ++; $ Y( N0 _/ ]2 Z% f% \! i, b
} * V- S, D6 A: Y( `% v
}
% x: V" T! \( e" i- v  ]9 g7 @ return len; 7 q+ S" K! A8 E
}
0 O2 d3 S  p+ X* i1 I/ D$ \方法二:! {/ v6 W3 w$ P6 M( p8 \. m  `
代码如下:function strlen(str){
& v. l" @. a- b1 a: w# M! K var len = 0;- S, ^0 M2 ^! O2 T9 N
for (var i=0; i<str.length; i++) {
. g' ~, P6 Z  b2 F var c = str.charcodeat(i);
2 u' Z/ k3 q: H3 G# H9 |# |, F //单字节加1
% r: q9 z/ V$ k% e3 p8 [ if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
2 k, v& J$ |0 C0 W len++;   q% L2 V1 l$ n" U
}
. O1 [/ T+ U2 M% b/ X0 z, }$ m* S) M) N else {
% V2 V) o" `; ^' X& c5 _3 V len+=2;
) p4 n# E( J) e } " [* z! V5 i! u2 j: h+ |1 Y
} 5 @. t) ^% m0 m0 E
return len;
% F+ M; j0 Z, F6 o}0 A' R8 G/ U0 n7 |
方法三:
& A9 n7 A# p5 }代码如下:var jmz = {};
$ A5 L# D+ M: i( j- F! n$ |% ajmz.getlength = function(str) {0 @4 r: V3 |8 t5 V& Z) l" r& I6 B
///<summary>获得字符串实际长度,中文2,英文1</summary>
% M2 H0 V4 C. @$ V' S: H0 L ///<param name=str>要获得长度的字符串</param>4 K8 R% ?# J0 E7 W7 r8 w3 q
var reallength = 0, len = str.length, charcode = -1;0 w0 j8 \) h3 K( @) C8 Y' v( F7 z
for (var i = 0; i < len; i++) {/ W1 |5 |+ B6 d. J0 A. X
charcode = str.charcodeat(i);7 G  s3 d$ R$ q4 T6 [
if (charcode >= 0 && charcode <= 128) reallength += 1;
# _1 |* P4 p2 I# W( n& e else reallength += 2;+ o" P, q- U, f$ E2 R5 M
}! j8 T  x0 M$ \
return reallength;# N  b, Y7 r2 T* A+ `5 N4 x
};
/ A- x  W0 x8 K' `' `方法四:
% U- H6 T6 f7 h: |. q代码如下:var l = str.length;
( n8 X: e& f6 Kvar blen = 0; * D* |8 Z6 ?5 r7 \  p
for(i=0; i<l; i++) { 1 B% W' G* x, C7 z. o* B
if ((str.charcodeat(i) & 0xff00) != 0) {
) b7 e- N4 J- {- p3 p. T2 lblen ++;
; c. R8 ^5 \, e8 g5 C} , p, Y8 ~1 v: n" L
blen ++; 2 H6 o/ q& t6 k, {7 p: v" h" P5 a4 h
}
- c) g) h' v. V6 X6 b& g方法五:
3 Y7 R% i- F/ F' n) ^& k/ }把双字节的替换成两个单字节的然后再获得长度
+ A. v$ B- s6 \7 N, Y代码如下:getblen = function(str) {
- H& C+ |( m% E; i( i4 N6 ]  M! r if (str == null) return 0;6 K8 T5 W# h& y4 k' ]
if (typeof str != string){
/ k) g+ p$ h5 M str += ;% F( P0 X6 k# k9 s9 |
}$ i# }  i5 e+ w0 E2 ]
return str.replace(/[^x00-xff]/g,01).length;1 n! W* V0 g6 u/ n
}6 A9 u1 C' C% V

9 T  k+ A/ m8 Y5 D: Q5 `3 R更多网页制作信息请查看: 网页制作
作者: mwxny    时间: 2015-10-19 20:48
唉!猪!你怎么了?
作者: bqtklouu    时间: 2015-10-19 20:49
嘻嘻~` 要是只看你的话~`~`` 很容易让人家以为你也跟偶们一样是天使类~`(偷笑中````````
作者: bqtklouu    时间: 2015-10-19 20:49
要睡觉了 呵呵
作者: buingeEvineus    时间: 2016-1-8 10:19
有现实中的偶在这...不佩服.............佩服电影里的....
作者: seazvyt    时间: 2016-1-8 10:19
呵呵~~~~你怎么老这样说~~~
作者: wwdu926a    时间: 2016-1-8 10:20
唉!猪!你怎么了?
作者: buingeEvineus    时间: 2016-1-8 10:20
我的我的 忘记了 呵呵
作者: alapScady    时间: 2016-1-8 10:20
在这个处女都要验证码的时代不得不弄个会员来当每天看贴无数基本上不回 后来发现很傻,很多比我注册晚的级别都比我高,我终于觉悟于是我就把这段文字保存在记事本里,每看一贴就复制粘贴一次。
作者: wwdu926a    时间: 2017-4-11 14:57
还呕像.....
作者: Mqokjdvq    时间: 2017-4-11 14:58
综上所述,恳请各位官员请勿动用武装力量请勿跨村、跨镇、跨市、跨省、跨国、跨洲、跨星球、跨银河系追捕。确因不抓不足以平民愤,或不抓就领不到薪水养家户口的公职人员,建议携带工作证
作者: tohme    时间: 2017-4-11 14:58
我起来了 哈哈 刚才迷了会
作者: Acropozelan    时间: 2017-4-11 15:05
能告诉我丫挺什么意思吗?赐教
作者: wwdu926a    时间: 2017-4-11 15:05
系统居然怀疑我灌水,我身边又没有水龙头。哦…明白了,身上有一个……




欢迎光临 得知互动 (https://bbs.dezhifl.com/) Powered by Discuz! X5.0