if (/\u4e00-\u9fff/.test(char)) { // 检查是否是汉字 这句出错,它直接跳转到else里面了,得到的是汉字,
时间: 2025-01-01 13:35:35 浏览: 7
对不起,看起来我的解释有误。如果你想确保只有汉字字符才进入汉字首字母提取的逻辑,应该调整条件判断语句。如果你想要检查一个字符是否是汉字而不是直接跳过非汉字字符,可以稍微修改下代码:
```javascript
function extractChineseInitials(str) {
let currentWord = '';
let result = '';
for (let i = 0; i < str.length; i++) {
const char = str.charAt(i);
// 使用正则表达式匹配汉字范围内的Unicode字符
if (/[\u4e00-\u9fa5]/.test(char)) { // 修改这里,用更准确的正则表达式覆盖原来的 [\u4e00-\u9fff]
if (char === ' ') { // 空格不需要提取首字母
continue;
}
currentWord += char;
if (currentWord.length > 1) {
result += currentWord.charAt(0).toLowerCase(); // 提取每个汉字的第一个字,并转为小写
currentWord = currentWord.slice(1); // 移除已提取的首字母
}
} else {
currentWord = char; // 非汉字字符直接累加到当前词
}
}
// 结束时检查剩余的单个汉字(如最后一个词)
if (currentWord.match(/[\u4e00-\u9fa5]/)) {
result += currentWord.charAt(0).toLowerCase();
}
return result;
}
// 示例输入
inputString = "你好,helloword123好啊";
console.log(extractChineseInitials(inputString)); // 输出: 'nhhelloword123'
阅读全文