返回列表 发新帖

js判断字符串长度的5个方法

379.3k 13
swmozowtfl 发表于 2015-7-9 23:23:35|湖北 | 查看全部 阅读模式
主要介绍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 `更多网页制作信息请查看: 网页制作

回复|共 13 个

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

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

得知互动是一个融创意、设计、开发、营销、生活、互联网于一体的专业交流分享平台。
Copyright © 2026 得知互动-专注Ai与站长技术交流社区-Ai交流平台 版权所有 All Rights Reserved. Powered by Discuz! X5.0 鄂ICP备15006301号-5|鄂公网安备 42018502006730号
关灯 在本版发帖 扫一扫添加QQ客服 返回顶部
快速回复 返回顶部 返回列表