5

我正在寻找将短语中不属于 AND 的所有字母小写的最快方法。我想留AND在原来的情况下,不管它是否and改变AND

例如,barack AND obama应该测试等于Barack AND Obama但不是barack and obama。(注意和的大小写差异)

这是一种方法,但我想知道是否有更短的方法或更确切地说是避免迭代器的方法:

var str = 'Barack AND Obama'; // should be barack AND obama after
str = str.split(/\s+/g).map(function (s) {
    return s.toLowerCase() != 'and' ? s.toLowerCase() : s;
}).join(' ');
4

2 回答 2

8

您可以使用否定的前瞻来小写每个不完全 AND 的单词:

str = str.replace(/\b(?!AND).+?\b/g, function(s) {
  return s.toLowerCase();
});
于 2012-12-07T21:28:12.417 回答
2

我认为 pimvdb 有最优雅的解决方案,但只是为了多样化,这里是另一个。

var str = 'Barack AND Obama';
var arr = str.split(' ');
for(var i=0;i<arr.length;i++){
  if (arr[i] != 'AND'){
    arr[i] = arr[i].toLowerCase();
  }
}
var ans = arr.join(" ");

它没有那么优雅,但我发现它更易于阅读,并且如果将来需要,也更容易修改,即添加到不应小写的单词列表中。

于 2012-12-07T21:44:54.850 回答