JavaScript 使用 Unicode 之後,無論是 中文
或 英文
都視為一個字元,若想將中文
視為 兩個字元
,英文
視為 一個字元
,則無法單純使用 ECMAScript 內建的 length()
。
Version
ECMAScript 2015
中文、英文、日文
let str1 = '你好'
let str2 = 'Hello'
let str3 = 'こんにちは'
let countCharacters = str => {
let count = 0
for (let i = 0; i < str.length; i++) {
let charCode = str.charCodeAt(i)
if (charCode > 127) {
count += 2;
} else {
count++
}
}
return count
}
countCharacters(str1) // ?
countCharacters(str2) // ?
countCharacters(str3) // ?
Line 9
let charCode = str.charCodeAt(i)
- 取得每個字的 ASCII code
Line 11
if (charCode > 127) {
count += 2;
} else {
count++
}
- ASCIII > 127 為
中文
、日文
,視為兩個字元
- 其他則為
數字
、英文
、符號
,視為一個字元
中英文夾雜、日英文夾雜
let str1 = '你好Hello'
let str2 = 'こんにちはHello'
let countCharacters = str => {
let count = 0
for (let i = 0; i < str.length; i++) {
let charCode = str.charCodeAt(i)
if (charCode > 127) {
count += 2;
} else {
count++
}
}
return count
}
countCharacters(str1) // ?
countCharacters(str2) // ?
- 中英文夾雜、日英文夾雜也能判斷
Conclusion
- 這種方法不見適用於中文,也適用於日文