2012-07-13 6 views
1

안녕하세요. 여기에 문제가 있습니다. 자바 스크립트를 사용하여 문자열에있는 + 문자의 모든 인스턴스를 바꾸려고합니다. 첫 번째 인스턴스 만 변경됩니다. +의 두 인스턴스가 있기 때문에 Hello%2BWord%%2B을해야 할 때javascript - 대체하는 방법?

var keyword = "Hello+Word%+"; 
keyword = keyword.replace("+", encodeURIComponent("+")); 
alert(keyword); 

출력은 Hello%2BWord%+입니다 :

여기 내 코드입니다.

이을에 확인할 수 있습니다 http://jsfiddle.net/Wy48Z/

이 도와주세요. 미리 감사드립니다.

답변

2

글로벌 플래그가 필요합니다. 모든 교체하려면 /<expression/

는, 단순히 후 g을 추가 :

http://jsfiddle.net/rtoal/Wy48Z/1/

var keyword = "Hello+Word%+"; 
keyword = keyword.replace(/\+/g, encodeURIComponent("+")); 
alert(keyword);​ 
+0

g가 무엇에 관한 것인가. 저는 많은 예제에서 그것을 보았습니다. 그러나 나는 그저 임의의 문자로만 생각했습니다. – NinjaBoy

+0

아, 죄송합니다. 답변을 추가해야합니다. '/.../ '뒤에 s, g, i와 같은 수식어 문자를 넣을 수 있습니다. g는 대소 문자를 구별하지 않는다는 것을 의미합니다. 당신이 그들을 찾을 수 있습니다 [여기] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/RegExp/). –

1

이 앞으로 같이 슬래시 inbetween expresison 퍼팅에 의해 수행되는 자바 스크립트 정규식에서 당신을 위해 고정 마지막으로 같은 : 예에서

/<expression/g

우리의 경우, 그것은 것 /\+/g

1

크로스 브라우저 방식은 "프로세스에게 패턴의 모든 일치, 바로 첫번째하지"의미 g (global) 플래그, 함께 regexp을 사용하는 것입니다

keyword = keyword.replace(/\+/g, encodeURIComponent("+")); 

알림 더하기 기호 앞에 백 슬래시를 붙입니다. 그렇지 않으면 "선행하는 것과 하나 이상 일치"라는 특별한 의미가 있기 때문입니다.