javascript - 在 JavaScript 中将连字符的名称大写

标签 javascript regex

我需要在 javascript 中将名称大写,到目前为止我已经在 SO 上找到了这些方法:

// doesn't capitalize first letter after hyphen -> gives Bjørn-martin
str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });

// capitalizes after hyphen, but also after funny Norwegian characters (æøå) -> gives BjøRn-Martin
str.replace(/\b[\w']+\b/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });

// same as first
str = str.toLowerCase().replace(/^[\u00C0-\u1FFF\u2C00-\uD7FF\w]|\s[\u00C0-\u1FFF\u2C00-\uD7FF\w]/g, function(letter) {
    return letter.toUpperCase();
});

当尝试将 bjørn-martin 大写时,它们都无法同时处理有趣的挪威字符和连字符。

我不太精通正则表达式,想知道是否有人可以为我指出正确的方向,以便将 bjørn-martin 正确地大写为 Bjørn-Martin .

最佳答案

这应该适合您的需求:

var capitalized = input.replace(/(^|[\s-])\S/g, function (match) {
    return match.toUpperCase();
});

关于javascript - 在 JavaScript 中将连字符的名称大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35504848/

相关文章:

javascript - 在 dc.js 中更改图例值

java - 是否可以屏蔽/隐藏冗长的 URL 并仅显示域名?

javascript - 使用 jquery 改变背景位置时的抖动

c - posix 扩展正则表达式 : (()|abc)xyz 的预期行为

javascript - AudioNode.disconnect() 后跟 .connect() 在 Safari 中不起作用

Javascript : Set values in HTML Form hidden input fields

java - 使用多个正则表达式: Print One Match at a Time in Order They are Seen

mySql - 在 html 中查找非 Ascii 字符

regex - 我的正则表达式匹配太多。我该如何让它停止?

c# - 正则表达式选择单词的一部分