将每个第3个字母转换为大写

时间:2014-12-05 08:53:05

标签: javascript

如何将每个第3个字符转换为大写字母。例如,此字符串pifedvcbtauzkwgnxyjrhmq已转换为piFedVcbTauKkwGnxYjrHmq。

这是我到目前为止所做的事情

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;
    }

上面的脚本返回pifEdvCbtAuzKwgNxyJrhMq,它从第4个字母开始转换。如果我将模数改为2则变为piFeDvCbTaUzKwGnXyJrHmQ

2 个答案:

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

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