降低除AND之外的所有单词

时间:2012-12-07 21:24:04

标签: javascript regex

我正在寻找一种最简单的方法来小写一个短语中不属于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(' ');

2 个答案:

答案 0 :(得分:8)

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

str = str.replace(/\b(?!AND).+?\b/g, function(s) {
  return s.toLowerCase();
});

答案 1 :(得分: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(" ");

它不是那么优雅,但我发现它稍微更人性化,并且如果将来需要更容易修改,即添加到不应该小写的单词列表中。