Ich habe einen Satz (dies ist ein dummer Beispielsatz), der so aussieht:

I_like_to_program__.

Ich brauche eine Funktion, damit es so aussieht:

I*like to program.

Ich habe diesen Ausdruck geschrieben:

var myExpression = new RegExp("\\_", "g");
return myString.replace(myExpression, " ").trim();

Das wird ausgegeben: "I like to program." - Ich bin nah dran. Ich brauche nur das erste Leerzeichen, das durch ein * ersetzt werden muss, damit es wie I*like to program. aussieht.

1
Jeff 9 Okt. 2012 im 20:57

5 Antworten

Beste Antwort

Wenn Sie g nicht hinzufügen, ersetzt Javascript standardmäßig nur einen Ersatz:

return myString.replace(/\__/, "").replace(/\_/, "*").replace(/\_/g, " ");
3
Denys Séguret 9 Okt. 2012 im 17:09

Ich ersetze zuerst alle _ Ersetzen durch "", danach haben wir ein Programm. Beim zweiten Ersetzen entferne ich dieses Leerzeichen (Programm) und beim dritten Ersetzen setze ich * an die erste Stelle.

DEMO

http://jsfiddle.net/saorabhkr/QV9qH/

1
Soarabh 9 Okt. 2012 im 17:59

Das Einfachste, was ich mir vorstellen kann, ist, es in zwei Schritten zu tun: Ersetzen Sie die erste Instanz durch *, iterieren Sie dann erneut und ersetzen Sie global durch ""

var myString = "I_LIKE_TO_PROGRAM";
var myExpression = new RegExp("\_");
myString = myString.replace(myExpression, "*").trim();
var newExpression = new RegExp("\_", "g");
alert(myString.replace(newExpression, " ").trim());
1
Colleen 9 Okt. 2012 im 17:41
mystring.replace("_", "*")
        .replace(/_/g, " ");

Oder Sie könnten den regulären Ausdruck ganz so vermeiden:

mystring.replace("_", "*")
        .split("_")
        .join(" ");
8
I Hate Lazy 9 Okt. 2012 im 16:59
var myString = "I_like_to_program__.";
var result =  myString.replace(/\_/g, " ").replace("  ", "").replace(" ", '*');
alert(result);
1
enhzflep 9 Okt. 2012 im 17:08