用*替换第一次出现的char然后用''替换其余的

时间:2012-10-09 16:57:06

标签: javascript regex

我有一句话(这是一个愚蠢的例句),如下所示:

I_like_to_program__.

我需要一个函数来使它看起来像这样:

I*like to program.

我写了这个表达式:

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

那个输出:"I like to program." - 我很接近。我只需要用*替换第一个空格,使其看起来像I*like to program.

5 个答案:

答案 0 :(得分:8)

mystring.replace("_", "*")
        .replace(/_/g, " ");

或者你可以像这样完全避免正则表达式:

mystring.replace("_", "*")
        .split("_")
        .join(" ");

答案 1 :(得分:3)

如果您不添加g,则javascript的默认值仅替换为一个替换:

return myString.replace(/\__/, "").replace(/\_/, "*").replace(/\_/g, " ");

答案 2 :(得分:1)

我能想到的最简单的事情是分两步完成 - 用*替换第一个实例,然后再次迭代并用“”替换全局“

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());

答案 3 :(得分:1)

var myString = "I_like_to_program__.";
var result =  myString.replace(/\_/g, " ").replace("  ", "").replace(" ", '*');
alert(result);

答案 4 :(得分:1)

我首先用“”替换所有_替换,在我们这样做后我们将有程序。 所以在第二次替换我删除(程序。)这个空间,并在第三个替换我把*放在第一位。

<强>样本

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