今天发现一个问题,12位长度的字符串,length居然有14位
102791017246
encodeIRL试试看
encodeURI(str)
'102791017246%E2%80%8C%E2%80%8C'
for (let i = 0; i < str.length; i++) {
console.log(`位置 ${i}: '${str[i]}' - Unicode: ${str.charCodeAt(i)}`);
}
打印看看
function visualizeInvisibleChars(str) {
return str
.replace(/\u200C/g, '[ZWNJ]') // 零宽非连接符
.replace(/\u200D/g, '[ZWJ]') // 零宽连接符
.replace(/\u200B/g, '[ZWSP]') // 零宽空格
.replace(/\u00A0/g, '[NBSP]'); // 非断行空格
}
console.log(visualizeInvisibleChars(str));
102791017246[ZWNJ][ZWNJ]
清理方法
移除所有零宽字符
function cleanString(str) {
return str
.replace(/[\u200B-\u200D\uFEFF]/g, '') // 移除零宽字符
.replace(/\s+/g, ' ') // 规范化空白字符
.trim();
}