【问题标题】:Title Case JavaScript标题案例 JavaScript
【发布时间】:2018-10-01 18:03:06
【问题描述】:

我正在尝试创建一个函数,在该函数中输入 toLowerCase() 后,会将数组每个元素中的第一个字母大写。

function title_case ( String ) {
    var result = "";
    var text = String.toLowerCase().split(" ");
    for (var i = 0; i < text.length; i++) {
      var c = text[i].charAt(0).toUpperCase();
      result = result + c;
    }
    return result;
  }

输入:

document.write( title_case( "a kitty PUrrs") );

当前代码的结果输出是 AKP。我正在尝试找出一种方法来使用 charAt(1) 删除小写字符,然后在可能的情况下使用 join() 输出。我在正确的轨道上吗?我知道有更简单的方法,但我正在尝试从这些方面学习一些东西。

【问题讨论】:

  • 我不会做的一件事是将 String 作为参数名称 - 我的意思是,你可以,但不要。 ..整个函数就是const title_case = s =&gt; s.toLowerCase().split(' ').map(w =&gt; w[0].toUpperCase() + w.slice(1)).join(' ')
  • 这能回答你的问题吗? JavaScript titleCase function without regex

标签: javascript arrays for-loop lowercase charat


【解决方案1】:

您可以在第一个字符之后创建字符串其余部分的子字符串,而不是删除第一个字符。即:

result = result + c + text[i].substring(1, text[i].length()-1) + " ";

text[i].substring(1, text[i].length()-1) 获取单词从第二个字符到词尾的部分(有点像“删除”第一个字符)。

您不需要join() 函数来处理字符串,只需要+ 来进行连接。末尾的" " 用空格分隔单词。在函数的最后,可以返回result.trim(),去掉最后一个空格。

【讨论】:

  • 非常感谢!这让我走上了正轨。我非常感谢您进一步解释连接和编码背后的逻辑。这是很棒的帮助。谢谢!
  • @Val7x 很高兴解释对您有所帮助!
【解决方案2】:

使用以下函数仅将句子大写或将句子大写。

console.log(capitalizeFirstLetter("THIS IS A SENTENCE")); //converts a sentence to capitalise. 

console.log(titleCase("THIS IS A SENTENCE")); //converts a sentence to titlecase. 

function capitalizeFirstLetter(string) {
    return string[0].toUpperCase() + string.slice(1).toLowerCase();
}

function titleCase(string) {
    return string.split(" ").map(x => capitalizeFirstLetter(x)).join(" ");
}

【讨论】:

  • 这会在传递一个空字符串时爆炸。
猜你喜欢
  • 2011-07-02
  • 1970-01-01
  • 2015-10-08
  • 1970-01-01
  • 2015-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
相关资源
最近更新 更多