2012-12-07 2 views
5

구문에서 AND의 일부가 아닌 모든 문자를 소문자로 변환하는 가장 빠른 방법을 찾고 있습니다. and이든 AND이든 변경하지 말고 원래 케이스에 AND을 남기고 싶습니다.AND 이외의 모든 단어 소문자로 바꾸기

예를 들어, barack AND obamaBarack 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(' '); 

답변

8

당신은 정확히 아니라 모든 단어를 소문자와 수 : 반복자를 피할 짧은 방법 또는 오히려 방법이 있는지 (의 경우 차이를 발견하고)

다음

하나의 방법입니다,하지만 난 궁금해 부정적인 lookahead 사용 :

+0

좋은 접근! 나는 최선을 선택하기 전에 다른 사람들에게도 관심이있다. –

+0

'String.replace'가 함수를 받아 들일 줄 몰랐다. –

+0

필자는 가상의 look-behind를하는 데 사용되는 것을 보았습니다. 이것은 아마도 내 문제에 대한 가장 우아한 접근 방법 일 것입니다. –

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(" "); 

이 우아하지 않습니다,하지만 난 소문자하지 않아야 단어의 목록에 추가 즉, 미래에 필요한 경우 약간 더 읽을 쉽게 수정 찾을 수 있습니다.

+0

당신은 거기에 무엇이든'쪼개지 마라 ', 당신은'split (' ')'을 할 생각 이었습니까? –

+0

네, 죄송합니다, 그건 내 부분에 오타였습니다. :) – Scott

관련 문제