function removeAccents(str) { return str.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); } 修改上面代码让其可以在es5环境中使用
时间: 2024-10-12 22:06:45 浏览: 16
node.js中的path.normalize方法使用说明
在ES5环境中,由于`normalize()` 和 `replace()` 函数以及`\u0300-\u036f`这样的Unicode范围匹配是在ECMAScript 5之后引入的特性,所以原始代码无法直接在旧版本的浏览器中运行。在这种情况下,你可以使用`String.fromCharCode()`和字符映射的方式替换掉重音符。下面是一个简单的示例:
```javascript
function removeAccents(str) {
var accentMap = {
'á': 'a', 'é': 'e', 'í': 'i', 'ó': 'o', 'ú': 'u',
'Á': 'A', 'É': 'E', 'Í': 'I', 'Ó': 'O', 'Ú': 'U'
// ... 其他需要替换的重音字符和它们的基础字符
};
// 将字符串拆分成字符数组
var chars = str.split('');
// 遍历数组,替换重音字符
for (var i = 0; i < chars.length; i++) {
if (accentMap.hasOwnProperty(chars[i])) {
chars[i] = accentMap[chars[i]];
}
}
// 再次组合成字符串
return chars.join('');
}
// 示例用法
console.log(removeAccents('hola ámigos')); // 输出: hola amigos
```
这个函数将逐个检查字符,并基于预定义的映射表移除重音符号。请注意,这种方法只适用于有限的几个重音字符,并且对于完整的Unicode支持可能会有所限制。
阅读全文