JS:如何将字符串中每个以符号分隔的单词的首字母大写?
JS : How to capitalize first letter of each symbol-separated word in a string?
当字符串只有一个词时,我的 JS 运行良好:
- 布鲁诺 ==> 布鲁诺
当字符串是 space 分隔的单词时,它也能很好地工作:
- 让·马克 ==> 让·马克
但是当它是下划线分隔的单词时,我得到了什么? :
- JEAN-FRANCOIS ==> Jean-Francois (错误)
我的目的是将其概括为:
- JEAN-FRANCOIS ==> Jean-Francois
如何让它变成那样?
我的脚本是:
capitalizeString(str) {
var lowerString = str.toLowerCase();
return lowerString.replace(/(^| )(\w)/g, (x) => {
return x.toUpperCase();
});
}
您可以将每个首字母和符号后的每个字母大写,如下所示:
function capitalizeString(str) {
var lowerString = str.toLowerCase();
return lowerString.replace(new RegExp("(?:\b|_)([a-z])", "g"), (x) => {
return x.toUpperCase();
});
}
console.log(capitalizeString("abcd-efgh"));
您可以添加连字符 (-
) 作为 RegEx 的一部分:
function capitalizeString(str) {
var lowerString = str.toLowerCase();
return lowerString.replace(/(^|[ -])(\w)/g, (x) => {
return x.toUpperCase();
});
}
console.log(capitalizeString('BRUNO'));
console.log(capitalizeString('JEAN MARC'));
console.log(capitalizeString('JEAN-FRANCOIS'));
如果您要有很多分隔符,您可以用它们创建一个数组,并使用它来动态创建您的正则表达式。像这样:
const separators = ['^', ' ', '-'];
const capitalizeString = (str) =>
str.toLowerCase()
.replace(new RegExp(`(${separators.join('|')})\w`, 'g'), (x) => x.toUpperCase());
const s1 = 'BRUNO';
const s2 = 'JEAN MARC';
const s3 = 'JEAN-MARC';
console.log(capitalizeString(s1));
console.log(capitalizeString(s2));
console.log(capitalizeString(s3));
String.prototype.capitalized = function () {
return this.toLowerCase().replace(/(^|[^a-z])[a-z]/g, v => v.toUpperCase());
};
console.log('I-love-YOU-guy'.capitalized()); // => I-Love-You-Guy
当字符串只有一个词时,我的 JS 运行良好:
- 布鲁诺 ==> 布鲁诺
当字符串是 space 分隔的单词时,它也能很好地工作:
- 让·马克 ==> 让·马克
但是当它是下划线分隔的单词时,我得到了什么? :
- JEAN-FRANCOIS ==> Jean-Francois (错误)
我的目的是将其概括为:
- JEAN-FRANCOIS ==> Jean-Francois
如何让它变成那样?
我的脚本是:
capitalizeString(str) {
var lowerString = str.toLowerCase();
return lowerString.replace(/(^| )(\w)/g, (x) => {
return x.toUpperCase();
});
}
您可以将每个首字母和符号后的每个字母大写,如下所示:
function capitalizeString(str) {
var lowerString = str.toLowerCase();
return lowerString.replace(new RegExp("(?:\b|_)([a-z])", "g"), (x) => {
return x.toUpperCase();
});
}
console.log(capitalizeString("abcd-efgh"));
您可以添加连字符 (-
) 作为 RegEx 的一部分:
function capitalizeString(str) {
var lowerString = str.toLowerCase();
return lowerString.replace(/(^|[ -])(\w)/g, (x) => {
return x.toUpperCase();
});
}
console.log(capitalizeString('BRUNO'));
console.log(capitalizeString('JEAN MARC'));
console.log(capitalizeString('JEAN-FRANCOIS'));
如果您要有很多分隔符,您可以用它们创建一个数组,并使用它来动态创建您的正则表达式。像这样:
const separators = ['^', ' ', '-'];
const capitalizeString = (str) =>
str.toLowerCase()
.replace(new RegExp(`(${separators.join('|')})\w`, 'g'), (x) => x.toUpperCase());
const s1 = 'BRUNO';
const s2 = 'JEAN MARC';
const s3 = 'JEAN-MARC';
console.log(capitalizeString(s1));
console.log(capitalizeString(s2));
console.log(capitalizeString(s3));
String.prototype.capitalized = function () {
return this.toLowerCase().replace(/(^|[^a-z])[a-z]/g, v => v.toUpperCase());
};
console.log('I-love-YOU-guy'.capitalized()); // => I-Love-You-Guy