JavaScript实现:为末尾含重音字母的单词添加单引号
解决字符串中末尾为重音字母的单词添加单引号的问题
原代码存在的问题
- 执行
split(' ')后立刻join(' '),没有对单个单词做处理,相当于直接使用原字符串,完全浪费了分割数组的操作 - 循环仅判断整个字符串的最后一个字符,无法独立处理每个单词的末尾字符
- 判断条件中混用
stringa3[i]和stringa[i],逻辑混乱,且未针对每个单词的末尾字符做校验 - 循环内每次都打印结果,会输出大量重复的无效内容
正确实现方案
我们需要逐个处理每个单词,检查其末尾字符是否为重音字母,再决定是否添加单引号:
// 目标字符串 const stringa = "nicolò à test è caffé"; // 存储所有需要匹配的重音字母,方便快速校验 const accentedChars = new Set(["ò", "è", "à", "ì", "é", "ù", "ú", "í", "á", "ó"]); // 分割字符串为单词数组,逐个处理 const processedWords = stringa.split(' ').map(word => { // 获取单词的最后一个字符(兼容性不足时可替换为word[word.length - 1]) const lastChar = word.at(-1); // 末尾是重音字母则加单引号,否则保持原单词 return accentedChars.has(lastChar) ? `${word}'` : word; }); // 拼接回完整字符串并输出 const result = processedWords.join(' '); console.log(result); // 输出:nicolò' à' test è' caffé'
代码说明
split(' ')将字符串拆分为独立单词的数组,便于逐个处理map遍历数组,对每个单词做末尾字符校验- 使用
Set存储重音字母,has方法能高效判断字符是否在目标集合内 - 处理完成后用
join(' ')重新拼接为完整字符串
示例验证
输入:Niccòlò Niccòlò
输出:Niccòlò' Niccòlò',完全符合需求要求
内容的提问来源于stack exchange,提问作者Lorenzo
相关产品推荐
相关产品推荐

