是否有一个简单的方法来转换字符串标题大小写?例如,约翰·史密斯变成了约翰·史密斯。我不是在寻找像John Resig的解决方案那样复杂的东西,只是(希望)一些一两行代码。
当前回答
使用正则表达式的一行程序,获取单词\b[A- za -z]的所有\g开头字符,并应用.toUpperCase()
const textString = "用Javascript将字符串转换为标题大小写。"; const convert = textString。替换(/ \ [a-zA-Z] b / g,(比赛)= > match.toUpperCase ()); console.log(转换)
其他回答
如果你可以在你的代码中使用第三方库,那么lodash为我们提供了一个帮助函数。
https://lodash.com/docs/4.17.3#startCase
_。startCase (foo栏); // => 'Foo Bar' _.startCase(“——foo bar”); // => 'Foo Bar' _.startCase(“fooBar”); // => 'Foo Bar' _.startCase(“__FOO_BAR__”); // => ' foo bar '
不使用正则表达式,仅供参考:
String.prototype.toProperCase = function() { Var =这个。分割(' '); Var结果= []; For (var I = 0;I < words.length;我+ +){ var letter = words[i].charAt(0).toUpperCase(); 结果。Push(字母+单词[i].slice(1)); } 返回的结果。加入(' '); }; console.log ( “约翰·史密斯”.toProperCase () )
如果一个CSS解决方案满足你的需求,你可以应用文本转换CSS样式到你的控件:
text-transform: capitalize;
请注意,这将会改变: hello world到hello world HELLO WORLD到HELLO WORLD(不变) emily-jane o'brien致emily-jane o'brien(不正确) 玛丽亚·冯·特拉普写给玛丽亚·冯·特拉普(不正确)
String.prototype.capitalize = function() {
return this.toLowerCase().split(' ').map(capFirst).join(' ');
function capFirst(str) {
return str.length === 0 ? str : str[0].toUpperCase() + str.substr(1);
}
}
用法:
"hello world".capitalize()
如果你担心这些填充词,你可以告诉函数什么不大写。
/**
* @param String str The text to be converted to titleCase.
* @param Array glue the words to leave in lowercase.
*/
var titleCase = function(str, glue){
glue = (glue) ? glue : ['of', 'for', 'and'];
return str.replace(/(\w)(\w*)/g, function(_, i, r){
var j = i.toUpperCase() + (r != null ? r : "");
return (glue.indexOf(j.toLowerCase())<0)?j:j.toLowerCase();
});
};
希望这能帮到你。
edit
如果你想处理领先的粘合词,你可以跟踪这个w/另一个变量:
var titleCase = function(str, glue){
glue = !!glue ? glue : ['of', 'for', 'and', 'a'];
var first = true;
return str.replace(/(\w)(\w*)/g, function(_, i, r) {
var j = i.toUpperCase() + (r != null ? r : '').toLowerCase();
var result = ((glue.indexOf(j.toLowerCase()) < 0) || first) ? j : j.toLowerCase();
first = false;
return result;
});
};
推荐文章
- 很好的初学者教程socket.io?
- HtmlSpecialChars在JavaScript中等价于什么?
- React: 'Redirect'没有从' React -router-dom'中导出
- 如何在React中使用钩子强制组件重新渲染?
- 我如何使用Jest模拟JavaScript的“窗口”对象?
- 我如何等待一个承诺完成之前返回一个函数的变量?
- 在JavaScript中根据键值查找和删除数组中的对象
- 使嵌套JavaScript对象平放/不平放的最快方法
- 如何以及为什么'a'['toUpperCase']()在JavaScript工作?
- 有Grunt生成index.html不同的设置
- 文档之间的区别。addEventListener和window。addEventListener?
- 如何检查动态附加的事件监听器是否存在?
- 如何写setTimeout与参数Coffeescript
- 将JavaScript字符串中的多个空格替换为单个空格
- JavaScript: override alert()