0

我有以下句子:

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 ", "");但我想要一种更好的方法来实现结果。

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

4

2 回答 2

3

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

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

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

于 2013-02-18T00:32:47.350 回答
2

我个人会做

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

我敢肯定有一些正则表达式,但似乎有点矫枉过正

我不是正则表达式专家,所以我无法为您提供正则表达式的解决方案

于 2013-02-18T00:30:11.647 回答