0
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>
아직도 "작업"에 대한 출력이 "oparation"입니다. 내 IE7 설정 때문입니까?
[편집] 너무 파이어 폭스에서
"작업"출력 "oparation":(
후 테스트의 경우이 코드 잘 작동합니다 : http://jsfiddle.net/W7pTu/ – Blender
예를 들어,이 [피들] (http://jsfiddle.net/wUqq7/) 작품을 제공하십시오. 물론 이외의 문자에 대한 기능을 작동하지 않습니다 정규 표현식 안에. – LoG