javascript字符串替换方法无法按预期工作

时间:2013-02-18 00:25:45

标签: javascript replace

我有以下句子:

One Flew Over the Cuckoo's Nest

我想从句子中删除"the""'"的任何实例,以便输出如下:

预期输出:

one flew over cuckoos nest

我使用以下代码:

var guess = "One Flew Over the Cuckoo's Nest";
guess = guess.toLowerCase().replace("'", "").replace("the", "");

实际输出:

one flew over  cuckoos nest

问题是在"over"之后出现了一个空格,因为我只是从那个特定的句子中移除"the"而不是之后的空格。

我知道我可以使用replace("the ", "");来解决这个问题,但我希望有更好的方法来实现这一目标。

我可以使用正则表达式吗?

2 个答案:

答案 0 :(得分:3)

您将遇到的一个问题是replace仅替换第一个匹配。为了替换所有这些,您需要使用带有g lobal修饰符的正则表达式。

guess = guess.toLowerCase().replace(/the|'/g,'').replace(/  +/g,' ');

第二个replace包含两个空格,后跟+。这将修复由删除的单词引起的任何“损坏”空格。此外,在第一个中,交替用于同时获取the个单词和撇号。

答案 1 :(得分:2)

我个人会这样做

var guess = "One Flew Over the Cuckoo's Nest";
guess = guess.toLowerCase().replace("'", "").replace(" the", "").replace("the ", "");

我确信这有一些regEx,但似乎有点过分

我不是regEx专家,因此我无法在regEx中为您提供解决方案