首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >免费代码营挑战-标题案例A句子

免费代码营挑战-标题案例A句子
EN

Stack Overflow用户
提问于 2018-01-20 16:33:37
回答 3查看 121关注 0票数 1

我目前正在经历免费代码营的第一个JS挑战。

我在标题为“一个句子”的挑战中遇到了麻烦。在这个挑战中,我需要编写一个函数,该函数将给定字符串中的每个单词的第一个字母大写,并将所有其他字母小写。Here's到挑战的链接我写了下面的代码,试图完成以下任务:

将|str|拆分为一个字母数组

将局部变量|toCAP|定义为空格后的每个字母|“"|

如果一个字母跟在空格后面

大写|字母|

推送|字母|而不是

否则

| LETTER |定义为字母

|字母|小写

| LETTER |推送到LETTER索引

返回不带间隔符的数组

代码语言:javascript
复制
function titleCase(str) {
  str.toLocaleLowerCase();
  var letterArray = str.split("");
  var letter = "";
  for (var i = 0; i < letterArray.length; i++) {
    if (i == 0) {
        letter = letterArray[0];
        letter.toUpperCase();
        letterArray[0] = letter;
    } else if (letterArray[i - 1] == " ") {
        letter = letterArray[i];
        letter.toUpperCase();
        letterArray[i] = letter;
    }
  } 
  return letterArray.join("");
}

titleCase("I'm a little tea pot");

为什么第二个条件不起作用,每个单词的第一个字母都大写?

EN

回答 3

Stack Overflow用户

发布于 2018-01-20 16:47:47

这里是使用forEach循环而不是传统的for循环的另一种方法-首先将传递的字符串拆分成单词,然后将每个单词拆分成字母。将第一个字母大写并将所有字母psuh放入一个返回的数组中。

代码语言:javascript
复制
function titleCase(str) {
  var wordArray = str.toLowerCase().split(" ");
  var sentenceArray = [];

  wordArray.forEach(function(word) {
    var letters = word.split('');
    letters[0] = letters[0].toUpperCase();
    sentenceArray.push(letters.join(''))
  })
  return sentenceArray.join(" ");
}

console.log(titleCase("I'm a little tea pot"));
console.log(titleCase("sHoRt AnD sToUt"));
console.log(titleCase("HERE IS MY HANDLE HERE IS MY SPOUT"));

票数 0
EN

Stack Overflow用户

发布于 2018-01-20 17:37:40

您希望首先将字符串设置为小写,以说明输入的所有情况。我在代码中包含了一些注释。在我取出的你的解决方案中有过多的字符串重新分配。您的第二个条件是没有正确选择字母,您需要arri而不是arri -1

代码语言:javascript
复制
function titleCase(str) {
  var newStr = str.toLowerCase(); //hold a lowercase version of str
  var letterArray = newStr.split("");
  var letter = "";
  for (var i = 0; i < letterArray.length; i++) {
    if (i == 0) { //test for first letter
     letterArray[0] = letterArray[0].toUpperCase(); //reassign as the uppercase version
    } else if (letterArray[i] == " ") {
     letterArray[i + 1] = letterArray[i + 1].toUpperCase(); //if space is detected, set the next letter to uppercase
    }
  } 
  return letterArray.join(""); //join into a string
}

这是我想出的解决方案:

代码语言:javascript
复制
function titleCase(str) {
  var newStr = str.toLowerCase();
  var result;
  var arr = newStr.split("");
  arr[0] = arr[0].toUpperCase();

  for (var i = 0; i < arr.length; i++){
    if (arr[i] === " "){
      arr[i + 1] = arr[i + 1].toUpperCase();
    }
  }

  result = arr.join("");

return result;

}
票数 0
EN

Stack Overflow用户

发布于 2020-02-11 08:34:34

代码语言:javascript
复制
function titleCase(str) {
  return str.toLowerCase().split(' ').map((word) => (word.charAt(0).toUpperCase() + word.slice(1))).join(' ');
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48354088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档