Sehr einfache kleine Frage, aber ich verstehe nicht ganz, wie es geht.
Ich muss jede Instanz von '_' durch ein Leerzeichen und jede Instanz von '#' durch nichts / leer ersetzen.
var string = '#Please send_an_information_pack_to_the_following_address:';
Ich habe das versucht:
string.replace('#','').replace('_', ' ');
Ich mag es nicht wirklich, solche Befehle zu verketten. Gibt es einen anderen Weg, dies in einem zu tun?
javascript
jquery
Shannon Hochkins
quelle
quelle
Antworten:
Verwenden Sie den Operator OR (
|
):Sie können auch eine Zeichenklasse verwenden:
Geige
Wenn Sie den Hash durch eine Sache und den Unterstrich durch eine andere ersetzen möchten, müssen Sie nur verketten. Sie können jedoch einen Prototyp hinzufügen:
Warum aber nicht verketten? Daran sehe ich nichts auszusetzen.
quelle
#|_
ist[#_]
, und Sie können genauso gut+
aufeinanderfolgende Spielestr.replace(/[+ -]/g,'');
setzen Sie einfach Leerzeichen in die Mitte.Verketten ist cool, warum sollte man es ablehnen?
Wie auch immer, hier ist eine weitere Option in einem Ersatz:
Das Ersetzen wählt "" wenn Übereinstimmung == "#", "" wenn nicht.
[Update] Für eine allgemeinere Lösung können Sie Ihre Ersatzzeichenfolgen in einem Objekt speichern:
quelle
var regex = new RegExp( Object.keys(replaceChars).join("|"), "g");
string.replace(regex,function(match) {return replaceChars[match];})
Machen Sie den zusätzlichen Schritt: Dies erleichtert das Ändern der replaceChars.Wenn Sie mehrere Zeichen ersetzen möchten, können Sie das aufrufen,
String.prototype.replace()
wobei das Ersetzungsargument eine Funktion ist, die für jede Übereinstimmung aufgerufen wird. Sie benötigen lediglich ein Objekt, das die Zeichenzuordnung darstellt, die Sie in dieser Funktion verwenden werden.Wenn Sie beispielsweise
a
durchx
,b
mity
undc
mit ersetzt werden möchtenz
, können Sie Folgendes tun:Ausgabe :
234xyz567yyyyxz
quelle
var
mitconst
hier. eine Alternative für erweiterte Browser-Unterstützung:var s ='234abc567bbbbac'; s = s.replace(/[abc]/g, function(m) { return {'a':'x','b':'y','c':'z'}[m]; }); console.log(s);
var chars = {a:'1', b:'2', c:'3'}; var s = '123abc123'; var u = s.replace(/[abc]/g, function(m) { return chars[m]; }); WScript.echo(u);
Geben Sie das
/g
(globale) Flag im regulären Ausdruck an, um alle Übereinstimmungen anstelle der ersten zu ersetzen:Um einen Charakter durch eine Sache und einen anderen Charakter durch etwas anderes zu ersetzen, kann man nicht wirklich herumkommen, wenn man zwei separate Anrufe benötigt
replace
. Sie können es wie Doorknob in eine Funktion abstrahieren, obwohl ich wahrscheinlich ein Objekt mit alt / neu als Schlüssel / Wert-Paare anstelle eines flachen Arrays verwenden würde.quelle
Sie können dies auch versuchen:
find
bezieht sich auf den zu findendenreplace
Text und auf den zu ersetzenden TextDies ersetzt Zeichen, bei denen die Groß- und Kleinschreibung nicht berücksichtigt wird. Andernfalls ändern Sie einfach die Regex-Flags nach Bedarf. ZB: für Groß- und Kleinschreibung ersetzen:
quelle
Sie können dies einfach versuchen:
Dies wird., - und # durch Ihren Ersatzchar ersetzen!
quelle
Hier ist eine einfache Möglichkeit, dies ohne RegEx zu tun.
Sie können die gewünschten Elemente prototypisieren und / oder zwischenspeichern.
quelle
str.replace(/#|_/g,'')
sed
y- Befehl oder à la Unixtr
), scheint dies die richtige Antwort zu sein.Bitte versuche:
Multi String ersetzen
var str = "http://www.abc.xyz.com"; str = str.replace(/http:|www|.com/g, ''); //str is "//.abc.xyz"
Ersetzen Sie mehrere Zeichen
var str = "a.b.c.d,e,f,g,h"; str = str.replace(/[.,]/g, ''); //str is "abcdefgh";
Viel Glück!
quelle
Sie können auch ein RegExp-Objekt an die Ersetzungsmethode übergeben, z
Javascript RegExp
quelle
replace
Anrufe verketten - dies hilft nicht, dies zu vermeiden.yourstring = '#Bitte senden Sie ein Informationspaket an die folgende Adresse:';
Ersetzen Sie '#' durch '' und '_' durch ein Leerzeichen
newstring2 ist dein Ergebnis
quelle
var str = '#this #is__ __#a test###__';
dass diese Zeichenfolge eindeutig mehrere Leerzeichen enthält.Hier ist eine andere Version, die String Prototype verwendet. Genießen!
quelle
Ich weiß nicht, wie viel dies helfen wird, aber ich wollte entfernen
<b>
und</b>
aus meiner Zeichenfolgealso habe ich benutzt
Wenn Sie also eine begrenzte Anzahl von Zeichen reduzieren möchten und keine Zeit verschwenden möchten, ist dies nützlich.
quelle
Hier ist eine "sichere HTML" -Funktion, die eine Funktion zum Reduzieren mehrerer Ersetzungen verwendet (diese Funktion wendet jede Ersetzung auf die gesamte Zeichenfolge an, sodass die Abhängigkeiten zwischen Ersetzungen erheblich sind).
quelle