浏览网页时看到一个把字符串偶数位转化为大写字母的问题,小小白也来班门弄斧尝试一下。
首先,看了那位朋友是这么写的,继续往下看
1 function toWeirdCase(string){ 2 //先判断字符串是否是单个单词组成 3 if(string.indexOf(" ")==-1){//单个单词组成的字符串 4 var arr1=string.split(""); 5 for(var i=0;i<arr1.length;i++){ 6 //偶数位的字母变成大写 7 if(i%2==0){ 8 arr1[i]=arr1[i].toUpperCase(); 9 }else{ 10 continue; 11 } 12 } 13 return arr1.join(""); 14 }else{//多个单词组成的字符串,中间有空格 15 var str2 = ""; 16 //把字符串由空格分割成数组 17 var arr2 = string.split(' '); 18 var arr3 = []; 19 for(var j=0;j<arr2.length;j++){ 20 //把arr2的每一项分割成数组,进行操作 21 arr3 = arr2[j].split(""); 22 for(var k=0;k<arr3.length;k++){ 23 if(k%2==0){ 24 arr3[k]=arr3[k].toUpperCase(); 25 }else{ 26 continue; 27 } 28 } 29 //str2是arr2的某一项 30 str2=arr3.join(""); 31 arr2[j]=str2; 32 } 33 return arr2.join(" "); 34 } 35 }
虽然略感繁琐但思路还算清晰,然后自己尝试了一下,写出来是这样的
function toUpCase(string) {
var arr = string.split(”);
var i;
for(i=0;i<arr.length;i+=2){
(function(num){
arr[i] = arr[i].toUpperCase();
return num;
})(i)
}
return arr.join(“”);
}
蒽,写完对比了一下,然后本小白一脸兴奋有木有,于是上网搜了一下,被各种大神把脸打的啪啪啪,且往下看
对,这是第一个
1 function toWeirdCase(string){ 2 return string.split(' ').map(function(word){ 3 return word.split('').map(function(letter, index){ 4 return index % 2 == 0 ? letter.toUpperCase() : letter.toLowerCase() 5 }).join(''); 6 }).join(' '); 7 }
然后,这是第二个
function toWeirdCaseCharacter(chr, index) { return index % 2 ? chr.toLowerCase() : chr.toUpperCase(); } function toWeirdCaseWord(word){ return word.split("").map(toWeirdCaseCharacter).join(""); } function toWeirdCase(string){ return string.split(" ").map(toWeirdCaseWord).join(" "); }
再看第三个
function toWeirdCase(string){ return string.replace(/(\w{1,2})/g,(m)=>m[0].toUpperCase()+m.slice(1)) }
大家看到了吧,尤其第三个,对一个正则都用的一塌糊涂的小白来说简直无情,道阻且长,前端的路还要继续前行。
本着交流学习的想法,希望路过的大神也都不吝赐教,分享自己的宝贵代码。
如果您有任何问题,欢迎下方评论,会在看到的第一时间回复您。