5

フレーズ内の AND の一部ではないすべての文字を小文字にする最速の方法を探しています。変わっていたのか、変わってはいけないANDのか、元のケースに残しておきたいです。andAND

たとえば、barack AND obama等しいとテストする必要がありますが、とはテストしBarack AND Obamaませんbarack and obama。(との大文字と小文字の違いに注意してください)

これが1つのアプローチですが、より短い方法、またはイテレータを回避する方法があるのではないかと思います:

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 に答える