我需要在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
。
答案 0 :(得分:5)
这应该符合您的需求:
var capitalized = input.replace(/(^|[\s-])\S/g, function (match) {
return match.toUpperCase();
});
答案 1 :(得分:0)
这是一个可配置的方法。这将允许您指定单词分隔符。
您需要的模式:/(^|-)(\w)/g
function transformToUpperCase(str, separators) {
separators = separators || [ ' ' ];
var regex = new RegExp('(^|[' + separators.join('') + '])(\\w)', 'g');
return str.toLowerCase().replace(regex, function(x) { return x.toUpperCase(); });
}
document.body.innerHTML = transformToUpperCase('bjørn-martin', ['-']);