الغرض: احسب طول السلسلة (حرف واحد باللغة الإنجليزية و 2 حرفًا باللغة الصينية)
الطريقة 1:
نسخة الكود كما يلي:
string.prototype.gblen = function () {
var len = 0 ؛
لـ (var i = 0 ؛ i <this.length ؛ i ++) {
if (this.charcodeat (i)> 127 || this.charcodeat (i) == 94) {
Len += 2 ؛
} آخر {
Len ++ ؛
}
}
إرجاع لين.
}
الطريقة 2:
نسخة الكود كما يلي: وظيفة strlen (str) {
var len = 0 ؛
لـ (var i = 0 ؛ i <str.length ؛ i ++) {
var c = str.charcodeat (i) ؛
// بايت واحد زائد 1
if (((c> = 0x0001 && c <= 0x007e) || (0xFF60 <= c && c <= 0xff9f)) {
Len ++ ؛
}
آخر {
Len+= 2 ؛
}
}
إرجاع لين.
}
الطريقة 3:
نسخة الكود كما يلي: var jmz = {} ؛
jmz.getLength = function (str) {
/// <summary> احصل على الطول الفعلي للسلسلة ، الصينية 2 ، الإنجليزية 1 </summary>
/// <param name = "str"> للحصول على سلسلة من الطول </param>
var realLength = 0 ، len = str.length ، charcode = -1 ؛
لـ (var i = 0 ؛ i <len ؛ i ++) {
charcode = str.charcodeat (i) ؛
if (charcode> = 0 && charcode <= 128) relelength += 1 ؛
Else RealLength += 2 ؛
}
العودة relelength ؛
} ؛
الطريقة 4:
نسخة الكود كما يلي: var l = str.length ؛
var blend = 0 ؛
لـ (i = 0 ؛ i <l ؛ i ++) {
if ((str.charcodeat (i) & 0xFF00)! = 0) {
بلين ++ ؛
}
بلين ++ ؛
}
الطريقة 5:
استبدل البايت المزدوج ببايت واحد ثم احصل على الطول
انسخ الرمز كما يلي: getBlen = function (str) {
إذا (str == null) return 0 ؛
if (typeof str! = "string") {
str += "" ؛
}
إرجاع str.replace (/[^/x00-/xff]/g ، "01"). الطول ؛
}