JavaScript:如何将指定字符集后的字符大写?忽略后续空格
问题分析与修复
原代码的核心问题是空格判断逻辑错误:判断非空格字符时用了charactercheck[i]!= "",但空格是空格字符(" ")而非空字符串,导致把空格误判为需要处理的目标字符,处理空格后就将标记c设为false,跳过了后面真正的有效字符t。
修正后的代码
function capitalizeChar() { var wordAfter = ["-", ":", "—", ".", "?", "!"]; var c = false; var words = "welcome: to the universe."; var charactercheck = words.split(""); for (var i = 0; i < charactercheck.length; i++) { if (c === true) { // 跳过所有空格,直到找到第一个非空格字符再转大写 if (charactercheck[i]!== " ") { charactercheck[i] = charactercheck[i].toUpperCase(); c = false; } } else { // 检查当前字符是否属于指定触发集,触发后开启大写标记 for (var j = 0; j < wordAfter.length; j++) { if (charactercheck[i] === wordAfter[j]) { c = true; break; } } } } console.log(charactercheck.join("")); } capitalizeChar();
修复说明
- 修正非空格判断条件:用
charactercheck[i]!== " "替代原有的!= "",确保只会跳过空格,直到找到第一个有效字符才执行大写转换。 - 优化逻辑结构:将触发字符的检查放到
else分支,避免在已开启大写标记时重复检查,逻辑更清晰。
运行修正后的代码,测试字符串会输出welcome: To the universe.,符合需求。
内容的提问来源于stack exchange,提问作者MITH_N
相关产品推荐
相关产品推荐

