【问题标题】:Capitalising each word in a sentence using an array-javascript [duplicate]使用数组javascript将句子中的每个单词大写[重复]
【发布时间】:2017-05-14 20:24:59
【问题描述】:

我有一个作业任务,我必须编写一个函数,将写入该函数的句子中的每个单词大写。我的想法是将每个单词转换为一个数组,针对该数组中每个项目的第一个字母进行循环,然后将该数组转换回字符串。我想出的代码是这样的

function titleCase(string) {
  var words = string.split(' ');
  for (var i = 0; i < words.length; i++) {
    const lettersUp = ((words[i])[0]).toUpperCase();
    const result = words[i].replace((words[i])[0], lettersUp);
    return result;
  }
}

我现在遇到的问题是它只返回数组的第一个单词。从我一直在做的故障排除中,我感觉我把循环搞砸了,但我不知道怎么做。任何帮助将不胜感激。 谢谢。

【问题讨论】:

  • 你从第一次迭代中返回,所以循环没用。
  • 因为你在循环内部返回。
  • return string.replace(/\b[a-z]/g, c =&gt; c.toUpperCase());

标签: javascript arrays function loops


【解决方案1】:

您正在从第一次迭代中返回,因此您的代码将无法工作。

你正在寻找的是这样的:

function titleCase(string) {
    var words = string.split(" ");
    for (var i = 0; i < words.length; i++) {
        const lettersUp = ((words[i])[0]).toUpperCase();
        words[i] = words[i].replace((words[i])[0], lettersUp);
    }
    return words.join(" ");
 }

不过,正则表达式是要走的路。请尝试使用。

【讨论】:

    【解决方案2】:

    尽量保持简单 - 不需要额外的变量,例如 lettersUp,您可以简单地操作 words 数组中的字符串。

    function titleCase(str) {
      var words = str.split(' ');
      for (var i = 0; i < words.length; i++) {
        words[i] = words[i].charAt(0).toUpperCase() + words[i].substring(1);     
      }
      return words.join(' '); 
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-24
      • 2020-03-29
      • 1970-01-01
      • 2020-12-22
      • 2021-07-05
      • 2012-05-20
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多