提问人:oktay mozaffari 提问时间:10/7/2023 最后编辑:kyle1901oktay mozaffari 更新时间:10/8/2023 访问量:48
我想背诵随机名称并将它们的第一个字母大写,但是当我在 .split(' ') 中放置空格时,我的代码分解
i suppose to recive random names and uppercase their first letter but when i put empty space in .split(' ') , my code breakdown
问:
const capitalizeName = function (name) {
const names = name.split(` `);
const uppercasedName = [];
for (const n of names) {
//uppercasedName.push(n[0].toUpperCase() + n.slice(1));
uppercasedName.push(n.replace(n[0], n[0].toUpperCase()));
}
console.log(uppercasedName.join(''));
};
capitalizeName('jessica ann smith davis ');
控制台显示问题出在upperName部分,但是当我删除name.split(' ')中的空间时,代码将起作用,但这次将所有字符串字母封盖
答:
1赞
volkerschulz
10/7/2023
#1
因为
capitalizeName('jessica ann smith davis ');
有一个尾随空间,
name.split(` `);
在名称末尾放置一个空元素
在拆分之前删除空间或修剪:
const capitalizeName = function (name) {
const names = name.trim().split(' ');
const upperName = [];
for (const n of names) {
//upperName.push(n[0].toUpperCase() + n.slice(1));
upperName.push(n.replace(n[0], n[0].toUpperCase()));
}
console.log(upperName.join(''));
};
capitalizeName('jessica ann smith davis ');
编辑:@jdkramhoft在他的答案中显示了第三个选项:在for循环中验证n。
1赞
jdkramhoft
10/7/2023
#2
由于末尾的空格,您的示例正在中断,并且适用于 .'jessica ann smith davis '
'jessica ann smith davis'
这是因为 split 会将尾随空格标识为空字。解决此问题的最简单方法是不要尝试将未定义的字符串大写。如果你想在最终结果之间留出空格,你可以用一个空格字符连接起来:join(' ')
const capitalizeName = function (name) {
const names = name.split(` `);
const upperName = [];
for (const n of names) {
n && upperName.push(n.replace(n[0], n[0].toUpperCase()));
}
return upperName.join(' ')
};
console.log(capitalizeName('jessica ann smith davis '));
评论
0赞
oktay mozaffari
10/8/2023
非常感谢您指出该错误,它现在可以正常工作
评论