2016-12-11 1 views
0

Ich habe eine Zeichenfolge und Nachricht:

str = "Test $0 $1 $2"; 
message = "Hi %2 Hello %2" ; 

Jetzt möchte ich alle %2-str in Nachricht ersetzen. Ich bin mit RegExp wie unten,

message = message.replace(new RegExp("%2" , "g"), str); 

Es funktioniert gut in Chrome und Firefox und Nachricht kommt als

erwartet
message = "Hi Test $0 $1 $2 Hello $0 $1 $2" 

Aber in Internet Explorer 11, es falschen Wert für Meldung geben, wie

message = "Hi Test %2 $1 $2 Hello %2 $1 $2" 

In IE11 wird $0 (Unterzeichenfolge von str) durch %2 ersetzt. Jeder kann mir bitte dies vorschlagen.

+0

Vielleicht möchten Sie schauen in der Dokumentation für ['ersetzen '] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter). Es sieht so aus, als müssten Sie Ihre '$' Zeichen entgehen. – 4castle

+0

Ihr Code ist wron, '"% 2 "' wird immer durch '" Test $ 0 $ 1 $ 2 "' ersetzt, daher lautet die resultierende Zeichenfolge: '" Hallo Test $ 0 $ 1 $ 2 Hallo '**' Test' ** '$ 0 $ 1 $ 2 "' – Hitmands

+0

Ersetzen Sie $ 0 durch $ &, es funktioniert in jedem Browser. –

Antwort

0

die Sie interessieren, wird es Ihnen

helfen

var str = 'Test $0 $1 $2'; 
 
message = "Hi %2 Hello %2"; 
 
var regx = new RegExp("%2", "g"); 
 
if (str.indexOf("$") > 0) { 
 
    var val = str[str.indexOf("$") + 1]; 
 
    if (val.trim() != "" && val.trim() != "$") { 
 
    var rex = new RegExp(val, "g"); 
 
    str = str.replace(rex, "$$" + val); 
 
    } 
 
} 
 
message = message.replace(new RegExp("%2", "g"), str); 
 
alert(message);

+0

funktioniert gut. Danke Vijay – sumitrajlx

2

In Ersetzungszeichenfolgen (das zweite Argument zu String#replace), dient das Dollarzeichen $ eine spezielle Funktion, und so muss jeder mit einem vorhergehenden Dollarzeichen maskiert werden. Daher sollten Sie Ihre str sein:

var str = 'Test $$0 $$1 $$2' 

Ich glaube nicht, dass die genaue Funktion des Dollarzeichens Sie im Moment auch relevant ist, aber wenn Sie mehr über die Zwecke erfahren möchten dient es Sie können this documentation page on the Mozilla Development Network besuchen.

Snippet:

var str = "Test $$0 $$1 $$2", 
 
    message = "Hi %2 Hello %2" 
 

 
message = message.replace(/%2/g, str) 
 

 
console.log(message)

Verwandte Themen