2011-03-14 7 views
3

나는 3 달러짜리 기호가있는 문자열이 있습니다. $$$Test123. div에이 문자열을 표시하고 싶습니다. 문제는 내가 replace를 사용할 때 내가 $$Test123 얻을 수 있다는 것입니다 - 2 달러 기호 대신에 3javascript 및 달러 기호 replaceAll

을 예 :

var sHtml="<_content_>"; 
var s="$$$Test"; 
sHtml= sHtml.replace("<_content_>", s); 

지금 sHtml의 결과가 $$Test이다;

어떻게하면 해결할 수 있습니까?

답변

8

javascript에는 기본 대체 기능이 없습니다. 당신은 replace()에 대한 호출의 두 번째 인수에 대한 문자열에 포함 된 경우

var sHtml="<_content_>" 
var s="$$$Test"; 
sHtml= sHtml.replace("<_content_>", s); 
+1

이것은 replaceAll 메소드의 단순한 예입니다. 정규 표현식에서 특별한 기능을 가진 심볼은 이스케이프해야합니다. 그렇지 않으면 특정 문자열에서 문제가 발생합니다. –

1

지수처럼 자신을 작성할 수 있습니다. 일반적으로 원래 문자열 내에서 일치하는 표현식을 나타낼 때이 표현식을 사용합니다. 예를 들어 위의 예에서

"foo foooo".replace(/fo+/g, "$&bar"); 
//-> "foobar foooobar" 

, $& 첫번째 단어 foo 및 제 foooo에있는 전체 일치 다시 가리킨다.

문제의 범위는 $입니다. 경기에서 리터럴 $을 사용하려면 첫 번째가 두 번째를 이스케이프하도록 두 개의 체인을 연결해야합니다. 3 개 문자 $ 기호가하려면 다음을 수행해야합니다 함께 체인 6, 그래서 같은 :

http://www.dumpsite.com/replaceAll.php

는 그것은 모든 자바 스크립트가 정기적를 통해 기능을 대체하여 대체 수행

var sHtml="<_content_>"; 
var s="$$$$$$Test"; 
sHtml= sHtml.replace("<_content_>", s); 
//-> "$$$Test" 
3

$은 특별한 의미가 당신의 친구가이

 


function replaceAll(txt, replace, with_this) { 
    return txt.replace(new RegExp(replace, 'g'),with_this); 

} 
 
0

이 완전히 대체하기 기능을 사용해보십시오 표현식을 사용하는 것과 동시에 정규 표현식 특수 문자가 검색 문자열이나 대체 문자열에 부주의로 나타날 때 발생하는 부작용을 제거합니다.

이 기능을 사용하면 특수 문자를 이스케이프 할 필요가 없습니다. replaceAll이 수행되기 전에 모든 특수 문자가 사전 이스케이프 처리됩니다.

이 함수는 예상 한 출력을 생성합니다.

시험해보고 수수료를 제공하십시오.

+0

이 질문은 꽤 오래되었으므로 요청자가이 문제를 해결할 수있는 방법을 찾은 것 같습니다. – GargantuChet

관련 문제