在JS中将每个单词的第一个字母转换为大写

时间:2017-02-25 22:12:52

标签: javascript html

我正在尝试将每个单词的第一个字母转换为大写,例如:“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”。

所以我的问题是它只分配第一个单词并跳过第二个单词,但它会打印句子两次。

5 个答案:

答案 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)

首先使用replacecharAt(0).toUpperCase(),然后使用substr(1).toLowerCase()。在inputchange事件上执行此操作。如果您希望按照您的方式执行此操作,请不要使用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'>