如何解释代码中的空格?

How do I account for the spaces in the code?

提问人:Kestone Dennis 提问时间:11/2/2023 更新时间:11/2/2023 访问量:51

问:

我正在解决这个代码大战 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('');
  
}

我被困住了,因为我无法解释空间,我需要下一个单词以大写字母开头。

JavaScript 循环 逻辑 CodeWarrior

评论

2赞 001 11/2/2023
可以使用除 以外的其他索引变量。将其重置为点击空格时。或者,空格上的字符串,做每个单词,然后重新组合句子。i0split

答:

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"