1 //计算字符串长度(英文占1个字符,中文汉字占2个字符)
2 //方法一:
3 String.prototype.gblen = function() {
4 var len = 0;
5 for (var i = 0; i < this.length; i++) {
6 if (this.charCodeAt(i) > 127 || this.charCodeAt(i) == 94) {
7 len += 2;
8 } else {
9 len++;
10 }
11 }
12 return len;
13 }
14
15 //方法二:
16 function strlen(str) {
17 var len = 0;
18 for (var i = 0; i < str.length; i++) {
19 var c = str.charCodeAt(i);
20 //单字节加1
21 if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
22 len++;
23 } else {
24 len += 2;
25 }
26 }
27 return len;
28 }
29
30 //方法三:
31 var jmz = {};
32 jmz.GetLength = function(str) {
33 ///<summary>获得字符串实际长度,中文2,英文1</summary>
34 ///<param name="str">要获得长度的字符串</param>
35 var realLength = 0,
36 len = str.length,
37 charCode = -1;
38 for (var i = 0; i < len; i++) {
39 charCode = str.charCodeAt(i);
40 if (charCode >= 0 && charCode <= 128) realLength += 1;
41 else realLength += 2;
42 }
43 return realLength;
44 };
45
46 //方法四:
47 var l = str.length;
48 var blen = 0;
49 for (i = 0; i < l; i++) {
50 if ((str.charCodeAt(i) & 0xff00) != 0) {
51 blen++;
52 }
53 blen++;
54 }
55
56 //方法五:
57 //把双字节的替换成两个单字节的然后再获得长度
58 getBLen = function(str) {
59 if (str == null) return 0;
60 if (typeof str != "string") {
61 str += "";
62 }
63 return str.replace(/[^\x00-\xff]/g, "01").length;
64 }