2014-12-05 2 views
0

세 번째 문자를 모두 대문자로 변환하는 방법. 예를 들어이 문자열 pifedvcbtauzkwgnxyjrhmq은 piFedVcbTauKkwGnxYjrHmq로 변환됩니다. 여기모든 세 번째 문자를 대문자로 변환하십시오.

그것은 4 편지에서 변환을 시작, 내가 스크립트 반환 pifEdvCbtAuzKwgNxyJrhMq 위까지

function up3rdletter(str){ 
     var i, result = ''; 
     for(i = 0; i < str.length; i++){ 
      if(i > 0 && i % 3 == 0){ 
       result += str[i].toUpperCase(); 
      }else{ 
       result += str[i]; 
      } 
     } 
     return result; 
    } 

한 일이다. 내가 2로 모듈 번호를 변경하는 경우 그것은 오히려 사소한 piFeDvCbTaUzKwGnXyJrHmQ

+3

'if (i % 3 === 2)'... (또는 if ((i + 1) % 3 === 0)'), 그렇게 쉽습니다.) – raina77ow

+0

와우, briliant! 이 코멘트를 대답에 넣어서 받아 들일 수 있습니다. –

+0

조건부 연산자를 사용할 수있는 좋은 기회입니다 :'result + = (i + 1) % 3? str [i] : str [i] .topperCase()'. ;-). 모든 브라우저가 색인에 의한 문자열 문자 액세스를 지원하는 것은 아니며, * charAt *가 더 나은 선택 일 수 있습니다. – RobG

답변

1

될 : JS 인덱싱은 0에서 시작하지만, 인간에 대한 자연 1 인덱스를 기반으로 문자를 변경하고 싶습니다.) 해결책? 어느 나머지 체크 이동 :

result += i % 3 === 2 ? str[i].toUpperCase() : str[i]; 

을 ... 0에 대해 확인에 가서 대신 i의 발전 :

result += (i + 1) % 3 ? str[i] : str[i].toUpperCase(); 

을하지만, 다음과 같은 사실, 나는 아마 그것을 써서 :

result = str.replace(/(..)(.)/g, function(_, m1, m2) { 
    return m1 + m2.toUpperCase(); 
}); 
+0

JS 시작에서 0부터 인덱싱을 알았습니다. 올바른 모듈로 리턴 번호를 사용하는 것이 혼란스럽고, 제안한 바대로 바뀌 었습니다. –

0
function up3rdletter(str){ 
     var i, result = ''; 
     var counter = 1; 
     for(i = 0; i < str.length; i++){ 
      if(i > 0 || counter % 3 == 0){ 
       result += str[i].toUpperCase(); 
      }else{ 
       result += str[i]; 
      } 
     counter++; 
     } 
     return result; 
    } 
관련 문제