2010-07-30 10 views
1

문자열에서 일부 안전하지 않은 문자를 제거하려고하지만 RegExp 객체에 문제가 있다고 생각합니다.일부 문자열을 문자열에서 제거하는 중

나는 인코딩 된 길이가 3 문자보다 큰 문자가 있으면 공백으로 교체해야합니다.

인코딩 된 값이 %3D이고 = 인 경우 내 문자열에 포함해도 괜찮습니다. 그러나 아포스트로피 인 경우 %E2%80%99 공백으로 교체해야합니다.

val = "Angelina’s"; 
valEnc = encodeURIComponent(val); 

for(var i = 0; i < val.length; i++){ 
    var a = val.substr(i,1); 
    if(encodeURIComponent(a).length > 3){ 
     console.log(a, encodeURIComponent(a)); 
     var re = new RegExp(encodeURIComponent(a),"ig"); 
     valEnc.replace(re," "); 
    }; 
}; 

console.log(decodeURIComponent(valEnc)); 

이 코드는 작동하지 않으며 원하지 않는 문자를 기록하지만 공백으로 대체 할 수 없습니다. 무엇을 잘못하고 있습니까? 감사.

+0

"값을 encryted 경우 ... 그래서"그것은 감사 고정 – NullUserException

+0

@NullUserException 자정 실수를 "인코딩"이야 ... – Sinan

답변

2

여기서 정규 표현식을 불필요하게 사용하는 것처럼 보입니다. 이렇게하는 한 가지 방법은 한 번에 결과 문자열 하나 개의 문자를 구축하는 것입니다 :

val = "Angelina’s"; 
valEnc = ""; 

for(var i = 0; i < val.length; i++){ 
    var a = val.substr(i,1); 
    var e = encodeURIComponent(a); 
    if(e.length <= 3){ 
     valEnc += e; 
    } 
} 

console.log(decodeURIComponent(valEnc)); 
+0

물론 맞아, 좀 더 잘 자고 신선한 두뇌로 계속 나아가 야해. 고마워 친구... – Sinan

관련 문제