方法一:
- String.prototype.gblen = function() {
- var len = 0;
- for (var i = 0; i < this.length; i++) {
- if (this.charCodeAt(i) > 127 || this.charCodeAt(i) == 94) {
- len += 2;
- } else {
- len++;
- }
- }
- return len;
- }
方法二:
- function getStringLen(Str) {
- var i, len, code;
- if (Str == null || Str == "") return 0;
- len = Str.length;
- for (i = 0; i < Str.length; i++) {
- code = Str.charCodeAt(i);
- if (code > 255) {
- len += 1
- }
- }
- return len;
- }
方法三:
- function getStringLen(val) {
- var len = 0;
- for (var i = 0; i < val.length; i++) {
- var a = val.charAt(i);
- if (a.match(/[^\x00-\xff]/ig) != null) {
- len += 2;
- } else {
- len += 1;
- }
- }
- return len;
- }
方法四:
- function getStringLen(str) {
- var len = 0;
- for (var i = 0; i < str.length; i++) {
- str.charCodeAt(i) > 255 ? len += 2 : len += 1;
- }
- return len;
- }
以上几种方法都大同小异;来一个不一样的:
方法五:
- function getBLen(str) {
- // 把双字节的替换成两个单字节的然后再获得长度
- if (str == null) return 0;
- if (typeof str != "string") {
- str += "";
- }
- return str.replace(/[^\x00-\xff]/g, "01").length;
- }
注:[^\x00-\xff]即ASCII 编码,表示不在0-255的字符。而charCodeAt() 方法返回指定位置的字符的 Unicode 编码。汉字的编码范围是不在0-255内的。