如何用JavaScript将字符串转为标题大小写并设置例外词
实现带例外单词的JavaScript标题大小写转换
要实现你需要的效果,核心思路是先统一处理字符串的大小写,再针对首词和例外单词做特殊逻辑,具体步骤和代码如下:
步骤说明
- 定义需要保留小写的例外单词列表(比如
of、the) - 将整个字符串转为全小写,避免原字符串大小写混乱的干扰
- 分割字符串为单词数组,逐个处理每个单词:
- 第一个单词强制转为标题大小写(首字母大写,其余小写)
- 非首单词如果在例外列表中,保持小写;否则转为标题大小写
代码实现
function toTitleCase(str) { // 定义需要保持小写的例外单词 const lowerCaseWords = new Set(['of', 'the']); // 先转全小写,再按空格分割成单词数组(处理多连续空格) const words = str.toLowerCase().split(/\s+/); return words.map((word, index) => { if (index === 0) { // 首词强制转标题大小写 return word.charAt(0).toUpperCase() + word.slice(1); } // 非首词:在例外列表则保持小写,否则转标题大小写 return lowerCaseWords.has(word) ? word : word.charAt(0).toUpperCase() + word.slice(1); }).join(' '); }
测试示例
console.log(toTitleCase("THE university Of Maastricht")); // 输出:The University of Maastricht console.log(toTitleCase("The queen Of The nile")); // 输出:The Queen of the Nile
补充说明
- 使用
Set存储例外单词是为了更快的查找速度,后续需要扩展例外词(比如and、or),直接往集合里添加即可 - 如果要支持带连字符的单词(比如
mother-in-law),可以单独写一个单词大写函数:
之后替换原代码中的标题大小写逻辑即可。function capitalizeWord(word) { return word.split('-').map(part => part.charAt(0).toUpperCase() + part.slice(1)).join('-'); }
内容的提问来源于stack exchange,提问作者Simon Logan
相关产品推荐
相关产品推荐

