gpt4 book ai didi

Javascript - 字符串大写函数抛出奇怪的错误

转载 作者:行者123 更新时间:2023-11-28 17:16:07 25 4
gpt4 key购买 nike

堆垛机,请帮助我疲惫的初学者大脑,让我知道我哪里出错了。

我的函数接受小写字符串作为其唯一参数。应该返回相同的字符串,其中每个单词的所有偶数索引字符都大写。但实际输出与我预期的输出不同。

例如:

console.log(toWeirdCase('harry enjoys reading books'))
//expected output: 'HaRrY EnJoYs ReAdInG BoOkS'
// actual output: 'HaRrY EnJoYs ReAdInG BookS'

console.log(toWeirdCase('gooooooogle search in vain'));
//expected output: 'GoOoOoOoGlE SeArCh In VaIn'
// actual output: GoooooooGlE SeArCh In VaIn

function toWeirdCase(string) {
string = string.split(" ");
for (let i = 0; i < string.length; i++) {
for (let x = 0; x < string[i].length; x++) {
if (string[i].indexOf(string[i].charAt(x)) % 2 == 0) {
string[i] = string[i].replace(string[i].charAt(x), string[i].charAt(x).toUpperCase());
}
}
}
return string.join(" ");
}

最佳答案

当您使用 indexOf 查找字符时,您将获得第一个出现的索引,而不一定是您最初查看的索引。同样,replace(当给定字符串值作为第一个参数时)将替换第一个出现的位置,不一定是您感兴趣的位置。

这是一个修复程序,无需对原始版本进行太多更改:

function toWeirdCase(string){
string = string.split(" ");
for (let i = 0; i<string.length; i++) {
for (let x = 0; x < string[i].length; x++) {
if (x % 2 == 0) {
// Only modify the single character of interest. The rest is sliced in
string[i] = string[i].slice(0, x) + string[i][x].toUpperCase() + string[i].slice(x+1);
}
}
}
return string.join(" ");
}

console.log(toWeirdCase('harry enjoys reading books'))
console.log(toWeirdCase('gooooooogle search in vain'));

替代方案

您也可以采用不同的方法,不将字符串拆分为单词,而只是在看到空格时重置标志。在这里,您可以看到使用 reduce 实现的想法,从而产生了函数式编程风格的解决方案:

function toWeirdCase(string){
return [...string].reduce(
([str, j], c, i) => c === " " || j ? [str + c, 0] : [str + c.toUpperCase(), 1],
["", 0]
)[0];
}

console.log(toWeirdCase('harry enjoys reading books'))
console.log(toWeirdCase('gooooooogle search in vain'));

关于Javascript - 字符串大写函数抛出奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53468121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com