提问人:Kestone Dennis 提问时间:11/2/2023 更新时间:11/2/2023 访问量:51
如何解释代码中的空格?
How do I account for the spaces in the code?
问:
我正在解决这个代码大战 kata 问题,该问题要求我在奇怪的情况下返回一个字符串,例如第一个字母是大写的,下一个字母是小写的,依此类推。
这是问题的链接
我想出了这个代码:
function toWeirdCase(string){
var r = string
let newString = [];
for( let i in string ) {
if(i%2 == 0){
newString.push(string[i].toUpperCase());
} else {
newString.push(string[i].toLowerCase());
}
}
return newString.join('');
}
我被困住了,因为我无法解释空间,我需要下一个单词以大写字母开头。
答:
1赞
Nedim Ramic
11/2/2023
#1
而不是逐个字符地执行,这将引入一些不必要的 if。(因为你不能只寻找奇数/偶数字母,所以你必须考虑空格和新单词)。您可以先将字符串拆分为单词。然后分别处理每个单词。这样一来,规则就更少了,你每次都从大写字母开始,完成后,再次加入它们。像这样的东西:
function toWeirdCase(string) {
return string.split(' ')
.map(word => word.split('')
.map((c, i) => i % 2 === 0 ? c.toUpperCase() : c.toLowerCase())
.join(''))
.join(' ')
}
0赞
Behemoth
11/2/2023
#2
这是一个基于您的方法的解决方案,在执行每个字符的实际大写之前,您首先将输入 .split()
转换为单独的单词。string
function toWeirdCase(string) {
const words = string.split(' ');
const modifiedWords = [];
for (const word of words) {
let newString = '';
for (let i in word) {
if (i % 2 === 0) newString += word[i].toUpperCase();
else newString += word[i].toLowerCase();
}
modifiedWords.push(newString);
}
return modifiedWords.join(' ');
}
console.log(toWeirdCase("String")); // "StRiNg"
console.log(toWeirdCase("Weird string case")); // "WeIrD StRiNg CaSe"
评论
i
0
split