2013-05-06 3 views
1

검색어에 대해 특별히 "% 2F"문자열을 모두 바꾸려고합니다. encudeURIComponent (search_term)를 통해 이미 검색어를 실행했으며 % 2F 만 이스케이프 문자를 이중으로 사용해야합니다.URI 자바 스크립트에서 n 개의 슬래시를 이스케이프 처리합니다.

검색어가 "ac/dc"인 경우 결과는 다음과 같습니다. ac % 252Fdc.

I는 다음과 같이 신속하게이 작업을 수행 할 수 있습니다

ac%252F%2Fdc 

을 내가 원하는 것이있을 때 :

search_term = encodeURIComponent(search_term); 
search_term = search_term.replace("%2F", "%252F"); 

그러나,이 반환 교류 // DC, 작동하지 않습니다

ac%252F%252Fdc 

이렇게 바꾸면 문제를 해결할 수 있습니다 ...

search_term = search_term.replace("%2F%2F", "%252F%252F"); 

이것은 확장 가능하지 않습니다. 첫 번째 바꾸기가 "% 2F"문자열을 모두 대체하지 않는 이유가 궁금합니다.

감사합니다. 내가 아는,

search_term = encodeURIComponent(search_term); 
search_term = search_term.replace(new RegExp("%2F", 'g'), "%252F"); 

무시 무시한,하지만 작동합니다

+0

중복 가능성 [자바 스크립트 문자열의 모든 포인트를 대체하는 방법 ] (http://stackoverflow.com/questions/2390789/how-to-replace-all-points-in-a-string-in-javascript) –

+0

처음에는 결과를 "ac % 252Fdc "그런 다음 당신은"내가 원하는 것은 : ac % 252F % 252Fdc "라고 말하면됩니다. 조금 더 명확히 해 주시겠습니까? –

+0

소프트웨어 가이 - 검색 용어가 예제간에 변경되었습니다 ... – panzhuli

답변

2

당신은이 같은 글로벌 대체 할 필요가있다.


편집 : 롭 W에서 알 수 있듯이,이 작업을 수행하는 리터럴 정규 표현식을 사용하는 것이 더 낫다 :

search_term = encodeURIComponent(search_term); 
search_term = search_term.replace(/%2F/g, "%252F"); 
+3

사용 상수 정규식의 경우 RegExp 생성자 대신 일반 표현식 리터럴을 사용하십시오 : '/ % 2F/g'. –

+0

음, 내 대답을 편집하겠습니다. –

+0

감사합니다. 정규 표현식을 처음 사용하는 사람이 있습니다. 내가 할 수있는대로 곧 받아 들일거야. – panzhuli

관련 문제