JavaScript优雅处理英文标题大小写
许多情况下,直接翻译的英文标题大小写不规范,例如"help and feedback"。 规范的英文标题通常要求每个单词首字母大写,但诸如"and"、"of"、"the"之类的冠词和介词则应保持小写。 CSS的text-transform: capitalize属性虽然能大写每个单词的首字母,但无法区分需要保留小写的单词,达不到规范效果。 那么,如何用JavaScript优雅地解决这个问题呢?
以下JavaScript函数提供了一种高效的解决方案:
function titleCase(str) { const ignoreWords = ['of', 'the', 'and', 'an', 'a', 'in', 'on', 'to']; // 扩展忽略单词列表 return str.toLowerCase().split(' ').map((word, index) => { if (index === 0 || !ignoreWords.includes(word)) { return word.charAt(0).toUpperCase() + word.slice(1); } else { return word; } }).join(' '); }
此函数首先定义了一个ignoreWords数组,包含无需大写首字母的常用单词(已扩展列表)。 然后,将输入字符串转换为小写,按空格分割成单词数组,并使用map函数处理每个单词。 if语句判断当前单词是否为首个单词或是否在ignoreWords数组中。 如果是首个单词或不在ignoreWords中,则大写首字母;否则,保持原样。 最后,将处理后的单词数组用空格连接,返回结果。 这样就能准确地规范英文标题的大小写,例如正确处理"and"。