JavaScript/Node.js中是否有PHP mb_convert_case(MB_CASE_TITLE)的等效函数?
JavaScript/Node.js 中类似 PHP mb_convert_case(MB_CASE_TITLE) 的实现
在JavaScript和Node.js环境中没有原生的完全等效于PHP mb_convert_case(MB_CASE_TITLE)的函数,但可以通过原生API结合自定义逻辑实现相同效果,满足姓名、街道名称这类文本的首字母大写需求。
基础实现(空格分隔文本)
针对普通空格分隔的字符串,可通过先转小写再匹配单词首字母转大写的方式实现:
function toTitleCase(str) { // 先统一转小写,再匹配字符串开头或空格后的首字母转大写 return str.toLocaleLowerCase().replace(/(^|\s)\w/g, match => match.toLocaleUpperCase()); }
示例用法:
console.log(toTitleCase("JOHN DOE")); // 输出: John Doe console.log(toTitleCase("MAIN STREET")); // 输出: Main Street
增强实现(处理特殊名称格式)
针对包含撇号、连字符的姓名(如O'CONNOR、MARY-ANN),需要调整正则规则以兼容这类边界:
function toTitleCaseEnhanced(str) { // 匹配字符串开头,或非单词/非撇号字符后的首字母 return str.toLocaleLowerCase().replace(/(^|[^\w'])(\w)/g, (_, prefix, char) => prefix + char.toLocaleUpperCase()); }
示例用法:
console.log(toTitleCaseEnhanced("O'CONNOR")); // 输出: O'Connor console.log(toTitleCaseEnhanced("MARY-ANN")); // 输出: Mary-Ann console.log(toTitleCaseEnhanced("VAN DYKE")); // 输出: Van Dyke
多语言支持版本
如果需要处理带重音的非英语字符(如法语、德语),可以指定本地化参数确保字符转换准确:
function toTitleCaseLocale(str, locale = 'en-US') { return str.toLocaleLowerCase(locale).replace(/(^|[^\w'])(\w)/g, (_, prefix, char) => prefix + char.toLocaleUpperCase(locale)); }
示例用法:
console.log(toTitleCaseLocale("ÉLÉPHANT ROUGE")); // 输出: Éléphant Rouge
内容的提问来源于stack exchange,提问作者Thallius
相关产品推荐
相关产品推荐

