有没有一种简单的方法将字符串转换为标题格式?例如,john smith
变成 John Smith
。我不想要像John Resig的解决方案那样复杂的东西,只是(希望)一种一两行代码就能实现的方法。
有没有一种简单的方法将字符串转换为标题格式?例如,john smith
变成 John Smith
。我不想要像John Resig的解决方案那样复杂的东西,只是(希望)一种一两行代码就能实现的方法。
var toMatch = "john w. smith";
var result = toMatch.replace(/(\w)(\w*)/g, function (_, i, r) {
return i.toUpperCase() + (r != null ? r : "");
}
)
似乎可以工作... 使用上述内容进行测试,"the quick-brown, fox? /jumps/ ^over^ the ¡lazy! dog..." 和 "C:/program files/some vendor/their 2nd application/a file1.txt"。
如果你想要2Nd而不是2nd,你可以改为/([a-z])(\w*)/g
。
第一个表单可以简化为:
function toTitleCase(toTransform) {
return toTransform.replace(/\b([a-z])/g, function (_, initial) {
return initial.toUpperCase();
});
}
jim-bob -> 吉姆-鲍勃
jim/bob -> 吉姆/鲍勃
jim_bob -> 吉姆_鲍勃
isn't -> 不是
école -> École
McDonalds -> 麦当劳
function toTitleCase(str) {
return str.replace(/\p{L}+('\p{L}+)?/gu, function(txt) {
return txt.charAt(0).toUpperCase() + txt.slice(1)
})
}
/\S+/g
支持重音符号:
function toTitleCase(str) {
return str.replace(/\S+/g, str => str.charAt(0).toUpperCase() + str.substr(1).toLowerCase());
}
console.log(toTitleCase("a city named örebro")); // A City Named Örebro
然而:"sunshine (yellow)" ⇒ "Sunshine (yellow)"
(提示:这是一个技术术语,可能需要在使用时注意大小写)"john f. kennedy".replace(/\b\S/g, t => t.toUpperCase())
o'henry
,但在horse's mouth
方面表现出奇怪的行为。 - Michael以下是使用CSS的另一种解决方案(如果要转换的文本是大写字母,则需要使用JavaScript):
HTML
<span id='text'>JOHN SMITH</span>
js
var str = document.getElementById('text').innerHtml;
var return_text = str.toLowerCase();
css
#text{text-transform:capitalize;}
function format_str(str) {
str = str.toLowerCase();
return '<span style="text-transform: capitalize">'+ str +'</span>';
}
toLowerCase()
吗? - wondimfunction toTitleCase(str) {
return str.toLocaleLowerCase().replace(
/(^|Ü|ü|Ş|ş|Ç|ç|İ|ı|Ö|ö|\w)\S*/g,
(txt) => txt.charAt(0).toLocaleUpperCase() + txt.substring(1),
)
}
console.log(toTitleCase('İSMAİL HAKKI'))
console.log(toTitleCase('ŞAHMARAN BİNBİR GECE MASALLARI'))
console.log(toTitleCase('TEKNOLOJİ ÜRÜNÜ'))
由于我的数据都是大写的,因此我在开头添加了“toLocaleLowerCase”。如果不需要,可以将其丢弃。
对于非英语语言,使用本地化操作很重要。
Teknoloji̇ üRünü
。顺便提一下。 - Ozgun Senyuva试试这个
String.prototype.toProperCase = function(){
return this.toLowerCase().replace(/(^[a-z]| [a-z]|-[a-z])/g,
function($1){
return $1.toUpperCase();
}
);
};
示例
var str = 'john smith';
str.toProperCase();
String.prototype.titlecase = function(lang, withLowers = false) {
var i, string, lowers, uppers;
string = this.replace(/([^\s:\-'])([^\s:\-']*)/g, function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
}).replace(/Mc(.)/g, function(match, next) {
return 'Mc' + next.toUpperCase();
});
if (withLowers) {
if (lang == 'EN') {
lowers = ['A', 'An', 'The', 'At', 'By', 'For', 'In', 'Of', 'On', 'To', 'Up', 'And', 'As', 'But', 'Or', 'Nor', 'Not'];
}
else {
lowers = ['Un', 'Une', 'Le', 'La', 'Les', 'Du', 'De', 'Des', 'À', 'Au', 'Aux', 'Par', 'Pour', 'Dans', 'Sur', 'Et', 'Comme', 'Mais', 'Ou', 'Où', 'Ne', 'Ni', 'Pas'];
}
for (i = 0; i < lowers.length; i++) {
string = string.replace(new RegExp('\\s' + lowers[i] + '\\s', 'g'), function(txt) {
return txt.toLowerCase();
});
}
}
uppers = ['Id', 'R&d'];
for (i = 0; i < uppers.length; i++) {
string = string.replace(new RegExp('\\b' + uppers[i] + '\\b', 'g'), uppers[i].toUpperCase());
}
return string;
}
以下是一个非常简单且精炼的ES6函数:
const titleCase = (str) => {
return str.replace(/\w\S*/g, (t) => { return t.charAt(0).toUpperCase() + t.substr(1).toLowerCase() });
}
export default titleCase;
将工具类代码放在 utilities
文件夹中,然后按照以下方式使用:
import titleCase from './utilities/titleCase.js';
const string = 'my title & string';
console.log(titleCase(string)); //-> 'My Title & String'