javascript-每个单词的首字母大写,无法正常工作

前端之家收集整理的这篇文章主要介绍了javascript-每个单词的首字母大写,无法正常工作 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

首先,我知道这样做不是正确的方法,但是我想了解为什么会这样,所以我会更好地理解语言.

function titleCase(str) {
  let str1 = str.toLowerCase();
  str1 = str1.replace(str1[0],str1[0].toUpperCase());
  console.log(str1);

  for(let i=1; i < str1.length; i++){
    if(str1[i]===' '){
      str1 = str1.replace(str1[i+1],str1[i+1].toUpperCase());
      console.log(i);
      console.log(str1);
    }
  }
  return str1;
}

titleCase("ab cd ef gh ba");

因此,如果在工作之前最后一个单词的首字母在任何单词中都没有显示为倒数第二个字母,则“ ab cd ef gh”在这里没有问题,但是“ ab cd ef gh ba”会导致以下输出:“ AB Cd Ef Gh ba”等.
谢谢!

最佳答案
发生这种情况的原因是.replace()函数将替换第一次出现的情况.

"Tell us more about your question us"

第一次找到空间时,它将替换第一个出现的小写字母“ u”,它恰好是正确的:

"Tell us more about your question us"
//    ^ this "u" happens to be the first occurrence

但是,当涉及到最后一个单词“ us”时,它将再次尝试查找小写字母“ u”的第一个匹配项,它是单词“ about”中间的一个:

"Tell Us More About Your Question us"
//               ^ this "u" is now the first lowercase "u"

猜你在找的JavaScript相关文章