2012-05-22 11 views
9

Ich habe eine Zeichenfolge, und ich muss es beheben, um es an eine Abfrage anzuhängen.Ersetzen von Leerzeichen in einer Zeichenfolge durch Bindestriche

sagen, dass ich die Zeichenfolge "Ein Korb für jeden Anlass" habe, und ich will es "A-Basket-For-Every-Occasion"

ich einen Raum zu finden sein müssen und es mit einem Bindestrich zu ersetzen. Dann muss ich prüfen, ob in der Zeichenfolge noch ein Leerzeichen steht. Wenn nicht, geben Sie die feste Zeichenfolge zurück. Wenn dies der Fall ist, führen Sie denselben Prozess erneut aus.

Klingt wie eine rekursive Funktion für mich, aber ich bin mir nicht sicher, wie Sie es einrichten. Jede Hilfe würde sehr geschätzt werden.

Antwort

15

Sie können einen regulären Ausdruck Ersatz wie folgt verwenden:

var str = "A Basket For Every Occasion"; 
str = str.replace(/\s/g, "-"); 

Das "g" Flag in der regex verursachen alle Leerzeichen ersetzt werden.

Sie können mehrere Leerzeichen auf einen einzelnen Bindestrich reduzieren, damit Sie nicht mehrere Bindestriche hintereinander haben. Das würde wie folgt aussehen:

var str = "A Basket For Every Occasion"; 
str = str.replace(/\s+/g, "-"); 
+0

perfekt danke. wird in 8 Minuten akzeptieren, wenn es mich lässt –

+0

@Tamil - Ich verstehe Ihren Kommentar nicht. Das OP wusste eindeutig nichts über den Ersatz von globalen Regex, also habe ich sie darüber aufgeklärt und ihnen gezeigt, wie es funktioniert, was alles im Sinne von SO ist und den zukünftigen Zuschauern zugute kommt. Außerdem bot ich eine Verbesserungsidee an, die mehrere Striche hintereinander verhindern würde. Wie sollte diese Frage Ihrer Meinung nach beantwortet worden sein? – jfriend00

+0

@ jfriend00 Es tut mir leid, wenn ich etwas falsch gemacht habe, aber du hättest ihn fragen können, ob er bis jetzt auf dem gleichen OP versucht hat. Sonst würde er im nächsten Moment an SO denken, wenn er an ein Problem denkt, anstatt es zu lösen. – Tamil

6

Verwendung ersetzen und global für Whitespaces \s (Flag g)

var a = "asd asd sad".replace(/\s/g,"-"); 

a wird

"asd-asd-sad" 
+1

upvoted. Vielen Dank. jfriend antwortete aber zuerst –

4

Versuchen

value = value.split(' ').join('-'); 

Ich finde benutzte das zu g Ich entferne meine Räume. Anstelle des Bindestrichs habe ich es leer gemacht und funktioniert super. Auch es ist alles JS. .split(limiter) löscht den Begrenzer und legt die Stringteile in ein Array (ohne Begrenzerelemente), dann können Sie das Array mit den Bindestrichen verbinden.