利用JavaScript为句子加标题的3种方法示例
前言
本文基于FreeCodeCamp基本算法脚本“标题案例一句”。
在此算法中,我们要更改文本字符串,以便每个单词的开头始终都有一个大写字母。
在本文中,我将解释三种方法。首先使用FOR循环,其次使用map()方法,第三次使用replace()方法。
算法挑战
- 返回提供的字符串,每个单词的首字母大写。确保单词的其余部分为小写。
- 出于此练习的目的,你还应该大写连接词,例如“the”和“of”。
提供的测试用例
- titleCase(“I'malittleteapot”)返回一个字符串。
- titleCase(“I'malittleteapot”)返回“I'mALittleTeaPot”。
- titleCase(“sHoRtAnDsToUt”)返回“ShortAndStout”。
- titleCase(“HEREISMYHANDLEHEREISMYSPOUT”)返回“HereIsMyHandleHereIsMySpout”。
1.标题大小写带有FOR循环的句子
对于此解决方案,我们将使用String.prototype.toLowerCase()方法
String.prototype.split()方法,String.prototype.charAt()方法
String.prototype.slice()方法和Array.prototype.join()方法
- toLowerCase()的方法返回主字符串值转换为小写
- split()的方法通过分离串为子分割字符串对象到字符串数组。
- charAt()的方法返回从字符串指定的字符。
- slice()的方法提取的字符串的一部分,并返回一个新的字符串。
- join()的方法连接到一个字符串数组的所有元素。
我们将需要在split()方法的括号之间添加一个空格
varstrSplit="I'malittleteapot".split('');
它将输出一个由单词组成的数组:
varstrSplit=["I'm","a","little","tea","pot"];
如果不在括号中添加空格,则将得到以下输出:
varstrSplit=["I","'","m","","a","","l","i","t","t","l","e","","t","e","a","","p","o","t"];
我们将其合并
str[i].charAt(0).toUpperCase()
在FOR循环中将大写前的字符串索引0字符
和
str[i].slice(1)
将从索引1提取到字符串的末尾。
为了标准化,我们将整个字符串设置为小写。
有注释:
functiontitleCase(str){ //Step1.Lowercasethestring str=str.toLowerCase(); //str="I'malittleteapot".toLowerCase(); //str="i'malittleteapot"; //Step2.Splitthestringintoanarrayofstrings str=str.split(''); //str="i'malittleteapot".split(''); //str=["i'm","a","little","tea","pot"]; //Step3.CreatetheFORloop for(vari=0;i"I'mALittleTeaPot" } titleCase("I'malittleteapot");
没有注释:
functiontitleCase(str){ str=str.toLowerCase().split(''); for(vari=0;i2.使用map()方法对案例进行标题案例
对于此解决方案,我们将使用Array.prototype.map()方法。
- map()的方法创建调用此阵列中的每个元件上的提供功能的结果的新的数组。使用map会依次为数组中的每个元素调用一次提供的回调函数,并根据结果构造一个新的数组。
如上例所示,在应用map()方法之前,我们将小写并分割字符串。
代替使用FOR循环,我们将把map()方法作为条件与上一个示例的连接相同。
(word.charAt(0).toUpperCase()+word.slice(1));有注释:
functiontitleCase(str){ //Step1.Lowercasethestring str=str.toLowerCase()//str="i'malittleteapot"; //Step2.Splitthestringintoanarrayofstrings .split('')//str=["i'm","a","little","tea","pot"]; //Step3.Mapoverthearray .map(function(word){ return(word.charAt(0).toUpperCase()+word.slice(1)); /*Mapprocess 1stword:"i'm"=>(word.charAt(0).toUpperCase()+word.slice(1)); "i'm".charAt(0).toUpperCase()+"i'm".slice(1); "I"+"'m"; return"I'm"; 2ndword:"a"=>(word.charAt(0).toUpperCase()+word.slice(1)); "a".charAt(0).toUpperCase()+"".slice(1); "A"+""; return"A"; 3rdword:"little"=>(word.charAt(0).toUpperCase()+word.slice(1)); "little".charAt(0).toUpperCase()+"little".slice(1); "L"+"ittle"; return"Little"; 4thword:"tea"=>(word.charAt(0).toUpperCase()+word.slice(1)); "tea".charAt(0).toUpperCase()+"tea".slice(1); "T"+"ea"; return"Tea"; 5thword:"pot"=>(word.charAt(0).toUpperCase()+word.slice(1)); "pot".charAt(0).toUpperCase()+"pot".slice(1); "P"+"ot"; return"Pot"; Endofthemap()method*/ }); //Step4.Returntheoutput returnstr.join('');//["I'm","A","Little","Tea","Pot"].join('')=>"I'mALittleTeaPot" } titleCase("I'malittleteapot");没有注释:
functiontitleCase(str){ returnstr.toLowerCase().split('').map(function(word){ return(word.charAt(0).toUpperCase()+word.slice(1)); }).join(''); } titleCase("I'malittleteapot");3.使用map()和replace()方法对句子进行标题处理
对于此解决方案,我们将继续使用Array.prototype.map()方法并添加String.prototype.replace()方法。
replace()的方法返回与一些或通过替换替换的图案的所有比赛的新字符串。
在我们的例子中,replace()方法的模式将是一个字符串,该字符串将被新的替换替换,并将被视为逐字字符串。我们还可以使用正则表达式作为模式来解决此算法。
如将在第一个示例中看到的那样,在应用map()方法之前,我们将小写并拆分字符串。
有注释:
functiontitleCase(str){ //Step1.Lowercasethestring str=str.toLowerCase()//str="i'malittleteapot"; //Step2.Splitthestringintoanarrayofstrings .split('')//str=["i'm","a","little","tea","pot"]; //Step3.Mapoverthearray .map(function(word){ returnword.replace(word[0],word[0].toUpperCase()); /*Mapprocess 1stword:"i'm"=>word.replace(word[0],word[0].toUpperCase()); "i'm".replace("i","I"); returnword=>"I'm" 2ndword:"a"=>word.replace(word[0],word[0].toUpperCase()); "a".replace("a","A"); returnword=>"A" 3rdword:"little"=>word.replace(word[0],word[0].toUpperCase()); "little".replace("l","L"); returnword=>"Little" 4thword:"tea"=>word.replace(word[0],word[0].toUpperCase()); "tea".replace("t","T"); returnword=>"Tea" 5thword:"pot"=>word.replace(word[0],word[0].toUpperCase()); "pot".replace("p","P"); returnword=>"Pot" Endofthemap()method*/ }); //Step4.Returntheoutput returnstr.join('');//["I'm","A","Little","Tea","Pot"].join('')=>"I'mALittleTeaPot" } titleCase("I'malittleteapot");没有注释:
functiontitleCase(str){ returnstr.toLowerCase().split('').map(function(word){ returnword.replace(word[0],word[0].toUpperCase()); }).join(''); } titleCase("I'malittleteapot");总结
到此这篇关于利用JavaScript为句子加标题的文章就介绍到这了,更多相关JavaScript为句子加标题内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!