2012-04-06 3 views
0
existieren

Ich habe eine Zeichenfolge und ich versuche zu findout was einen besseren Weg durch ersetzt (die boundry Räume als auch, wenn sie vorhanden sind)String-Wert und boundry Leerzeichen ersetzen, wenn sie

während auch den Wert ohne ersetzen tun Multipule-Pässe (dh Aufruf, trim_multispace und trimed_result).

var replaceVal = "c"; 
var strVals = "a b c d e f g h"; 

var replacedVal = strVals.replace(new RegExp("\\b"+replaceVal+"\\b",""),""); 

alert(replacedVal) 

var trim_multispace = replacedVal.replace(/ +(?=)/g,''); 
var trimed_result = trim_multispace.replace(/^\s+|\s+$/g, ''); 

alert(trimed_result) 

Antwort

2

Ich bin nicht sicher, ob ich Sie richtig bekommen, aber diese Regex arbeitet in der Art und Weise Sie

angegeben
strVals.replace(new RegExp(replaceVal, 'g'), '') 
     .replace(/ +/g, ' ').replace(/^\s+|\s+$/g, ''); 
+0

Vielen Dank! Narendra, und warum hast du deine Antwort bearbeitet? Das Original funktionierte gut? – david

+0

@david Ich habe dem 'RegExp'-Konstruktor ein' g' -Flag hinzugefügt, um eine globale Ersetzung von 'replaceVal' vorzunehmen. Das heißt, wenn 'replaceVal' irgendwo in der Zeichenkette mehrfach gefunden wird, werden alle Vorkommen ersetzt. Ich dachte, das würde zu deinem Szenario passen. –

+0

nur um Sie wissen zu lassen, dass die neu anhängende globale Flagge Ihre Lösung für meinen Fall fehlschlägt, weil es alle Vorkommen für 'replaceVal' ersetzt wie 'abcdefg hc'' c' wird aus 'hc' entfernt – david

1

Die folgende tut dies in fast einem Schritt, zuerst den Wert ersetzen und jede umgebende Leerzeichen mit einem einzigen Leerzeichen, dann schneiden Sie das Ergebnis:

var replacedVal = strVals.replace(new RegExp("\\s*"+replaceVal+"\\s*", ""), " ").trim(); 
+1

Dies würde nicht mehrere Leerzeichen irgendwo in der Zeichenfolge in ein einzelnes Leerzeichen reduzieren. Eine andere Sache ist die "trimmen" -Funktion ist nur von Javascript 1.8.1 verfügbar. https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/Trim –

+0

Nach der Frage, das ist keine Voraussetzung. OP erwähnt nur Begrenzungsräume um den Wert, der ersetzt wird, obwohl der ursprüngliche Code den Nebeneffekt hätte, auch alle Mehrfachräume zu entfernen. –

+0

danke F.J trim() wird für die Zukunft nützlich +1 – david

Verwandte Themen