0
我想使用Evan Elliott的代碼(下面)刪除字符串中的重音符號,但其返回的是「a」而不是每個字符的相應香草版本。我在頁面頂部聲明<meta charset="utf-8">
。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;
}
[編輯] 好吧我做了一個測試頁面,試圖找出問題是什麼:
<!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>
仍然是輸出「操作」「oparation」。是因爲我的IE7設置?
[編輯]在Firefox
「操作」 輸出 「oparation」 太:(
發表你的測試情況下,該代碼工作正常:http://jsfiddle.net/W7pTu/ – Blender
請提供一個例子,這[小提琴](http://jsfiddle.net/wUqq7/)的作品。當然,該功能不適用於其他字符在regexps裏面。 – LoG