【发布时间】:2012-01-01 10:42:28
【问题描述】:
我想使用 Evan Elliott 的代码(如下)来删除字符串中的重音符号,但它返回一个“a”而不是每个字符各自的原版版本。我在页面顶部声明<meta charset="utf-8">。
function NormalizeString(s){
var r=s.toLowerCase();
var r=s.toLowerCase();
r = r.replace(new RegExp("\\s", 'g'),"");
r = r.replace(new RegExp("[àáâãäå]", 'g'),"a");
r = r.replace(new RegExp("æ", 'g'),"ae");
r = r.replace(new RegExp("ç", 'g'),"c");
r = r.replace(new RegExp("[èéêë]", 'g'),"e");
r = r.replace(new RegExp("[ìíîï]", 'g'),"i");
r = r.replace(new RegExp("ñ", 'g'),"n");
r = r.replace(new RegExp("[òóôõö]", 'g'),"o");
r = r.replace(new RegExp("œ", 'g'),"oe");
r = r.replace(new RegExp("[ùúûü]", 'g'),"u");
r = r.replace(new RegExp("[ýÿ]", 'g'),"y");
r = r.replace(new RegExp("\\W", 'g'),"");
return r;
}
[编辑] 好的,我做了一个测试页面,试图找出问题所在:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script type="text/javascript">
function NormalizeString(s){
var r=s.toLowerCase();
var r=s.toLowerCase();
r = r.replace(new RegExp("\\s", 'g'),"");
r = r.replace(new RegExp("[àáâãäå]", 'g'),"a");
r = r.replace(new RegExp("æ", 'g'),"ae");
r = r.replace(new RegExp("ç", 'g'),"c");
r = r.replace(new RegExp("[èéêë]", 'g'),"e");
r = r.replace(new RegExp("[ìíîï]", 'g'),"i");
r = r.replace(new RegExp("ñ", 'g'),"n");
r = r.replace(new RegExp("[òóôõö]", 'g'),"o");
r = r.replace(new RegExp("œ", 'g'),"oe");
r = r.replace(new RegExp("[ùúûü]", 'g'),"u");
r = r.replace(new RegExp("[ýÿ]", 'g'),"y");
r = r.replace(new RegExp("\\W", 'g'),"");
return r;
}
function loadhandler(){
alert(NormalizeString('Opérations'))
}
</script>
</head>
<body class="" onload="loadhandler()">
</body>
</html>
“操作”的输出仍然是“操作”。是因为我的 IE7 设置吗?
[编辑]
“Opération”在 Firefox 中也输出“oparation” :(
【问题讨论】:
-
发布您的测试用例。此代码工作正常:jsfiddle.net/W7pTu
-
请提供一个例子,这个fiddle 有效。当然,该函数不适用于正则表达式中的字符以外的字符。
标签: javascript string internet-explorer-7 diacritics