JS : How to capitalize first letter of each symbol-separated word in a string?
当字符串只有一个字时,我的JS会很好地工作:
- 布鲁诺=>布鲁诺
当字符串是空格分隔的单词时,它也能很好地工作:
- 让-马克=>让-马克
但当它是一个下划线分隔的单词时,我得到了?:
- Jean-Francois==>Jean-Francois(错误)
我的目的是将其概括为:
- 让-弗朗索瓦=>让-弗朗索瓦
我怎么才能变成那样?
我的剧本是:
1 2 3 4 5 6 | capitalizeString(str) { var lowerString = str.toLowerCase(); return lowerString.replace(/(^| )(\w)/g, (x) => { return x.toUpperCase(); }); } |
如果要使用许多分隔符,可以使用它们创建一个数组,并使用它动态创建regex。这样地:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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)); |
您可以添加连字符(
1 2 3 4 5 6 7 8 9 10 | 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')); |
号
1 2 3 4 | 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 |
。
您可以将每一个第一个字母以及每一个字母都大写,如下所示:
1 2 3 4 5 6 7 8 9 | 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")); |