如何将每个第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
答案 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;
}