色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript indexof 中文

李中冰1年前7瀏覽0評論
JavaScript 常用函數之一的 indexOf,可以在字符串中搜索一個字符,然后返回這個字符在字符串中的位置,如果沒有找到這個字符,則返回 -1。在處理字符串相關操作時,indexOf 常被用到,尤其是在搜索中文字符時,需要注意其特殊性。 常規用法: 使用 indexOf 時,需要傳遞字符或字符串作為參數,代碼示例如下:
let str = "Hello, World!";
let position = str.indexOf("o");
console.log(position); // 4
在這個例子中,我們將字符串 "Hello, World!" 傳遞給 indexOf 函數,并查找字符 "o" 的位置。最終我們得到結果 4,因為這個字符出現在字符串的第五個位置上。 中文字符: 然而在處理中文字符時,indexOf 的行為會顯得比較奇怪。比如我們來看下面這個例子:
let str = "Hello, 世界!";
let position = str.indexOf("界");
console.log(position); // -1
如果你仔細觀察,你會發現問題:字符 "界" 明明出現在 "Hello, 世界!" 字符串中,為什么 indexOf 卻返回了 -1 呢? 這是因為在 JavaScript 中,中文字符所占的字節數比較大,不同的語言對于編碼(encoding)有不同的規定,中文字符可能會占用兩個字節或以上。而在 indexOf 函數中,它匹配的是單個字符,而不是一整個中文字符,因此如果字符只有一半匹配了,搜索結果就會失敗。 為了解決這個問題,我們需要做一些修改。可以通過循環的方法遍歷字符串的每一個字符,逐一進行對比。示例如下:
function indexOfChinese(str, ch) {
for (let i = 0; i< str.length;) {
let j = i;
let success = true;
for (let k = 0; k< ch.length; k++) {
if (str.charAt(j) !== ch.charAt(k)) {
success = false;
break;
}
j++;
}
if (success) {
return i;
}
i++;
}
return -1;
}
let str = "Hello, 世界!";
let position = indexOfChinese(str, "界");
console.log(position); // 8
在這個例子中,我們為自己寫了一個類似于 indexOf 的函數 indexOfChinese。它通過循環遍歷字符串的每一個字符,逐一進行對比,如果找到了就返回位置。這個函數的輸出結果是 8,因為 "界" 出現在字符 "世" 的后面。 處理字符串時需要小心,特別是當涉及到中文字符時。indexOf 這個常用的方法在中文處理時表現的不是很正常,需要開發者在使用時注意其特殊性。