我正在尝试将每个单词的第一个字母转换为大写,例如:“hello world”应该是“Hello World”。
到目前为止,这是我的代码。
function test() {
var doc = document.getElementById("testInput").value;
var str = doc.replace(/\w\S*/g, doc.charAt(0).toUpperCase() + doc.substring(1).toLowerCase());
document.getElementById("tst").innerHTML = str;
}
让我们说我的输入是“你好世界”,预期的结果是“你好世界” 但我得到的是“Hello world Hello world”。
所以我的问题是它只分配第一个单词并跳过第二个单词,但它会打印句子两次。
答案 0 :(得分:1)
尝试使用:
str.split(" ").map(e => e[0].toUpperCase() + e.slice(1)).join(" ")
答案 1 :(得分:1)
您基本上是使用连接复制值。
通过执行以下操作,您将只传递与正则表达式模式匹配的子字符串,然后进行替换:
function test() {
var doc = document.getElementById("testInput").value;
var str = doc.replace(/\w\S*/g, function(txt){ return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });
document.getElementById("tst").innerHTML = str;
}
答案 2 :(得分:0)
String.prototype.toUpperCaseWords = function () {
return this.replace(/\w+/g, function(a){
return a.charAt(0).toUpperCase() + a.slice(1).toLowerCase()
})
}
用法:
var stringVariable = "First put into a var";
stringVariable.toUpperCaseWords(); // Output: First Put Into A Var
来源:https://blog.smalldo.gs/2014/06/easily-add-phps-ucwords-ucfirst-to-javascript/
答案 3 :(得分:0)
您可以使用:
function Capitalize(str){
var arr = str.split(" ");
for(var i = 0; i< arr.length; i++)
{
arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].slice(1);
}
var result = arr.join(" ");
console.log(result);
}
Capitalize("hello world");
你知道你只能通过CSS做到这一点吗?
div:hover{
text-transform: capitalize;
}
<div>
hover on me!
</div>
答案 4 :(得分:0)
首先使用replace
,charAt(0).toUpperCase()
,然后使用substr(1).toLowerCase()
。在input
或change
事件上执行此操作。如果您希望按照您的方式执行此操作,请不要使用innerHTML
,请改用textContent
。
<强>段强>
var inp1 = document.getElementById('input1');
inp1.addEventListener('input', function(e) {
var inp2 = document.getElementById('input2');
var text = this.value;
var res = titleCase(text);
inp2.value = res;
}, false);
function titleCase(str) {
return str.replace(/\w\S*/g, function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
}
<input id='input1'>
<input id='input2'>