是否有一个简单的方法来转换字符串标题大小写?例如,约翰·史密斯变成了约翰·史密斯。我不是在寻找像John Resig的解决方案那样复杂的东西,只是(希望)一些一两行代码。
当前回答
你可以立即toLowerCase字符串,然后只是toUpperCase每个单词的第一个字母。变成了非常简单的一行:
函数titleCase(str) { 返回str.toLowerCase()。/\b\w/g, s => s. touppercase ()); } console.log (titleCase(‘钢铁侠’); console.log (titleCase(“绿巨人”);
其他回答
我用正则表达式回答。
更多regex信息:https://regex101.com/r/AgRM3p/1
function toTitleCase(string = '') { const regex = /^[a-z]{0,1}|\s\w/gi; string = string.toLowerCase(); string.match(regex).forEach((char) => { string = string.replace(char, char.toUpperCase()); }); return string; } const input = document.getElementById('fullname'); const button = document.getElementById('button'); const result = document.getElementById('result'); button.addEventListener('click', () => { result.innerText = toTitleCase(input.value); }); <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Test</title> </head> <body> <input type="text" id="fullname"> <button id="button">click me</button> <p id="result">Result here</p> <script src="./index.js"></script> </body> </html>
可以将第一个字符大写,并与其余字符串连接。
Let STR = 'john smith'; Let res = str.split(" "); res.forEach((w, index) => { res[index] = w. charat (0). touppercase ().concat(w。片(1,w.length)) }); Res = Res .join(" "); console.log (res);
如果你想使用NPM库,请查看title-case:
安装:
npm install title-case --save
用法:
import { titleCase } from "title-case";
titleCase("string"); //=> "String"
titleCase("follow step-by-step instructions"); //=> "Follow Step-by-Step Instructions"
试试这个,最短的方法:
str.replace(/(^[a-z])|(\s+[a-z])/g, txt => txt.toUpperCase());
https://lodash.com/docs/4.17.11#capitalize
使用Lodash库!!更可靠的
_.capitalize('FRED'); => 'Fred'