代码之家  ›  专栏  ›  技术社区  ›  TehBrackShiip

使用JavaScript将每个数组元素的第一个字母大写

  •  2
  • TehBrackShiip  · 技术社区  · 7 年前

    我有一个文本字符串,我已经在每个逗号上拆分成一个数组。然后我循环遍历数组,将每个元素逐个添加到字符串中,但使用换行符将它们分开。

    var beg2 = document.twocities.begins.value;
    var ans22 = "";
    var words2 = beg2.split(",");
    
    for(var i=0; i<words2.length; i++){
        ans22 += words2[i] + "<br>"; 
    }
    
    document.getElementById("ans22").innerHTML = ans22;
    

    现在,我尝试使用这段代码将每行的第一个字母大写,但只有整个字符串的第一个字母最终被大写,而不是每行的第一个字母。

    var ans23 = "";
    
    for (var i=0; i<words2.length; i++){
        firstLetter = words[i].charAt(0);
        firstLetterCap = words[i].charAt(0).toUpperCase();
        words[i].replace(firstLetter,firstLetterCap);
        ans23 += words2[i] + "<br>"; 
    }
    

    2 回复  |  直到 7 年前
        1
  •  2
  •   Mohammad DefenestrationDay    7 年前

    你不需要使用 .replace() .charAt(0) 选择字符串的第一个字符并使用 .slice() 选择字符串的下一部分

    var beg2 = "first,second,third";
    var ans22 = "";
    var words = beg2.split(",");
    
    for (var i=0; i<words.length; i++){
      words[i] = words[i].charAt(0).toUpperCase() + words[i].slice(1);
      ans22 += words[i] + "<br>"; 
    }
    document.getElementById("ans22").innerHTML = ans22;
    <div id="ans22"></div>

    你也可以使用CSS ::first-letter 伪元素和 text-transform 属性来做这项工作。

    var str = "first,second,third";
    document.getElementById("ans22").innerHTML = str.split(",").map(function(val){
      return "<div>"+val+"</div>"
    }).join("");
    #ans22 div::first-letter {
      text-transform: capitalize;
    }
    <div id=“ans22”></部门>
        2
  •  4
  •   slider    7 年前

    map 通过将句子中的每个单词转换为大写形式,然后将数组连接回一个句子:

    var sentence = 'hello world test';
    var capitalized = sentence
                      .split(' ')
                      .map(w => w.charAt(0).toUpperCase() + w.slice(1))
                      .join('<br>');
    
    console.log(capitalized);
    推荐文章