2

下面的函数应该大写句子中每个单词的第一个字母(str)!不幸的是,它不起作用,我找不到解决方案!

函数titleCase(str){设arr=str.toLowerCase().split(“”);for(设i=0;i<arr.length;i++){arr[i].charAt(0).toUpperCase();}返回arr.join(“”);}log(titleCase(“我是一个小茶壶”);

1

3个答案

重置为默认值

您需要指定字母大写的结果,并将其连接到单词的其余部分:

函数titleCase(str){设arr=str.toLowerCase().split(“”);for(设i=0;i<arr.length;i++){arr[i]=arr[i].charAt(0).toUpperCase()+arr[i-].substring(1);}返回arr.join(“”);}log(titleCase(“我是一个小茶壶”);

它也更容易使用地图:

函数titleCase(str){return str.split(“”).map(s=>s.charAt(0).toUpperCase()+s.substring(1)).join(“”);}log(titleCase(“我是一个小茶壶”);

1

阿珥是字符串数组,但字符串是不可变的-只需调用至UpperCase()在字符上只会给您一个对新,大写字符,而不更改原始字符串。您需要显式重新分配数组项:

函数titleCase(str){设arr=str.toLowerCase().split(“”);for(设i=0;i<arr.length;i++){arr[i]=arr[i].charAt(0).toUpperCase()+arr[i.切片(1);}返回arr.join(“”);}log(titleCase(“我是一个小茶壶”);

或者,也许更优雅地说,您可以使用正则表达式。下面使用lookbehind,它在Chrome、Opera和Node的最新版本中有效;lookbehind使代码看起来更干净,但并不是所有地方都支持它:

const titleCase=str=>str.replace(/(?<=^|\s)\s/g,firstChar=>firstChar.to UpperCase());log(titleCase(“我是一个小茶壶”);

或者,不回头看:

const titleCase=str=>str.replace(/(\S)(\S*)/g,(_,firstChar,rest)=>firstChar.toUpperCase()+rest);log(titleCase(“我是一个小茶壶”);

1
  • 非常感谢你!我只是一个初学者!你帮了我很多! 2019年4月13日23:30
0

您可以通过这种方式更新代码

  • 第一个小写所有字符
  • 循环字符串索引
  • 如果索引为0索引-1是一个空格字符,使str[索引]改为大写
  • 继续向其追加字符串并在末尾返回

函数titleCase(str){let LowerCaseStr=字符串到LowerCase()let final=“”for(设i=0;i<LowerCaseStr.length;i++){如果(i===0|| LowerCaseStr[i-1]===''){final+=下壳体[i].到上壳体()}其他{最终+=较低基准[i]}}返回最终结果}log(titleCase(“我是一个小茶壶”);

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.