当前位置:  开发笔记 > 编程语言 > 正文

标题案例一句

如何解决《标题案例一句》经验,为你挑选了1个好方法。

因此,我想将字符串转换为Title Case字符串。我已经写了这段代码,但是运行时我得到的是小写相同的字符串。谁能指出我对此有何疑问?任何帮助深表感谢。

function capitalize(str) {
    return str.toUpperCase();
}

function titleCase(str1) {
    str1 = str1.toLowerCase();
    var arr = str1.split(' ');
    var l = arr.length;
    var m;

    for (var i = 0; i < l; i++) {
        m = arr[i].length;
        for (var j = 0; j < m; j++) {
            if (j === 0) {
                arr[i][0] = capitalize(arr[i][0]);
            }
            else {
                arr[i][j] = arr[i][j];
            }
        }
    }
    return arr;
}

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

Xotic750.. 5

我很确定您早些时候已就此问题获得过建议,但可以使用ES5方法(您可以将其降级为for循环使用)。

function titleCase(str1) {
  return str1.toLowerCase().split(' ').map(function(word) {
    return word.charAt(0).toUpperCase() + word.slice(1);
  }).join(' ');
}
document.body.textContent = titleCase("I'm a little tea potty");

现在,您的代码是什么?

function capitalize(str) {
  return str.toUpperCase();
}
function titleCase(str1) {
  str1 = str1.toLowerCase();
  var arr = str1.split(' ');
  var l = arr.length;
  var m;

  for (var i = 0; i < l; i++) {
    m = arr[i].length;
    for (var j = 0; j < m; j++) {
      if (j === 0) {
        arr[i][0] = capitalize(arr[i][0]);
      } else {
        arr[i][j] = arr[i][j];
      }
    }
  }
  return arr;
}
document.body.textContent = titleCase("I'm a little tea potty");

让我们一点一点地看一下:

function capitalize(str) {
  return str.toUpperCase();
}

上面没什么错,只是功能化似乎毫无意义。

所以,现在我们有了您的函数,您接受了一个参数(字符串),然后将其全部小写

function titleCase(str1) {
  str1 = str1.toLowerCase();

因此,您的字符串来了"I'm a little tea potty",它变成了"i'm a little tea potty"。到目前为止,一切都很好。然后在空格处分割它。

  var arr = str1.split(' ');
  var l = arr.length;
  var m;

伴随着您的字符串,成为var arr = ["i'm","a","little","tea","potty"];l成为5该数组的长度。接下来,您打算遍历数组arr,看起来不错

for (var i = 0; i < l; i++) {

因此,对于数组(迭代)中的每个单词(一个字符串),您都会获得字符串的长度,第一个i'm3

m = arr[i].length;

然后,您打算迭代单词中的每个字符,这很好

for (var j = 0; j < m; j++) {

然后,您是说如果它是单词的第一个字符,那么我要一个大写字母,否则不做任何事。

  if (j === 0) {
    arr[i][0] = capitalize(arr[i][0]);
  } else {
    arr[i][j] = arr[i][j];
  }

但这就是问题,您尝试将字符写回到不可变的字符串中。没有引发任何错误,没有任何变化,就像字符串具有只读开关一样,就像在存储卡上一样。因此,您的循环会不断地进行,不执行任何操作,直到完成所有操作。然后,您返回数组。

return arr;

惊奇的是,这与将句子拆分为单词时一样。 ["i'm","a","little","tea","potty"]



1> Xotic750..:

我很确定您早些时候已就此问题获得过建议,但可以使用ES5方法(您可以将其降级为for循环使用)。

function titleCase(str1) {
  return str1.toLowerCase().split(' ').map(function(word) {
    return word.charAt(0).toUpperCase() + word.slice(1);
  }).join(' ');
}
document.body.textContent = titleCase("I'm a little tea potty");
推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有