replace
能够帮你完成这个任务,例如:
var str = str.replace(/ü/g, 'u');
当然,ü
和u
不是同一个字母。 :-)
如果您正在尝试使用给定范围之外的字符替换所有内容(例如使用-
),则可以通过指定范围来完成:
var str = str.replace(/[^A-Za-z0-9\-_]/g, '-');
这将替换掉所有非英文字母、数字、-
或_
的字符为-
。(方括号中的字符范围为[...]
,开头的^
表示“不是”)。这里有一个实时例子。
但这可能会让慕尼黑市长看起来有点不舒服。 :-) 您可以使用传递到replace
中的函数尝试只删除音标符号:
var str = str.replace(/[^A-Za-z0-9\-_]/g, function(ch) {
if ("áàâä".indexOf(ch) >= 0) {
return 'a';
}
if ("úùûü".indexOf(ch) >= 0) {
return 'u';
}
return '-';
});
实例演示
上述代码优化了长字符串的情况。如果字符串本身很短,则重复使用正则表达式可能更好:
var str = str.replace(/[áàâä]/g, 'a')
.replace(/[úùûü]/g, 'u')
.replace(/[^A-Za-z0-9\-_]/g, '-');
...但那只是推测。
请注意,JavaScript字符串中的文字字符完全没有问题,但是您可能会在文件编码方面遇到一些有趣的问题。我倾向于使用Unicode转义。因此,例如,上面的内容将是:
var str = str.replace(/[\u00e4\u00e2\u00e0\u00e1]/g, 'a')
.replace(/[\u00fc\u00fb\u00f9\u00fa]/g, 'u')
.replace(' ','-');
...但是,还有很多事情要做...