全面解读字符串转换为驼峰格式

/*
 * 实现函数 convertToCamelCase 功能,其会转换传入的字符串参数 string 为驼峰格式。具体要求如下:
 * 1、参数 string 是以中划线(-)连接单词的字符串,需将第二个起的非空单词首字母转为大写,
 * 如 -welcome-to-china 转换后的结果为 welcomeToChina。
 * 2、返回转换后的字符串
 */

 看完上述需求,我们接下来边分析需求 一边操作:

1/   先声明一个函数

function convertToCamelCase(str){}  //形参设置为Str(string简写)

2/  接下来我们要思考一件事,把字符串传进来后要怎么办?

1) 先传进来,我没拿到字符串思考3秒钟。分词为 welcome,To,China   ,是不是这样的格式? 咋一看有木有熟悉的感觉,这不就是一个数组吗?

2)["welcome","To","China"];  是这样没错吧。

3)那么我们再思考如何返回一个值是 welcomeToChina 呢? 我们想到一个方法 Join()  [不懂JOIN用法可以去W3Cschool看看 ];  最后把这个数组用join的方式合并起来就得到驼峰效果了 对吧。 我太TM聪明了。

3/ 那么如何把  -welcome-to-china 这个玩意转成数组呢?  我突然想到一个split , 以某个字符为分割,然后切成对应数量的数组。

function convertToCamelCase(str){
     //先拆   str.split('-');
     //赋值   strArr
   strArr = str.split('-');    //先用split拆成数组,'-'同时也能被消灭掉。
}  

//console.log(strArr) //正好是 ['','welcome','to','china'];

接下来遇到一个问题多一个' ' 空的数组怎么办? 我们可以用删除  shift() ,删除数组首个值。

就这么结束了?  如果是我们传的是 'welcome-to-china' 那不是删除的是'welcome'吗?所以我们要加一个判断

function convertToCamelCase(str){
     //先拆   str.split('-');
     //赋值   strArr
   strArr = str.split('-');    //先用split拆成数组,'-'同时也能被消灭掉。
  
   if(strArr[0] ===""){
        strArr.shift();
  }  
}  

此时我们确认我们能正确的得到 ['welcome','to','china'] 这个数组。拆,我们拆迁完成了,接下来要“合”了。 此刻我脑海里想起了一首歌 “你们要在一起,在一起,在一起‘’

此刻我们知道"-welcome-to-china" , 但是我们不知道这个功能函数如果 传  " -welcome-to-china-XXX-xxx" 以后传别的值咋办,所以这是一个未知的啊,怎么办?我灵光一闪,我们可以用FOR循环啊,它不就是为了解决未知变化的而存在的循环么。

function convertToCamelCase(str){
     //先拆   str.split('-');
     //赋值   strArr
   strArr = str.split('-');    //先用split拆成数组,'-'同时也能被消灭掉。
  
   if(strArr[0] ===""){
        strArr.shift();
  }  
   //初始化
   var i = 1;   
   var len = strArr.length;
      
   for(; i < len; i++){
      //我们要让下标值为1的字符串,首个字母大写。所以i =1 才行, 不能从第0个开始。
     //strArr[i][0]  代表数组下标第一个单词的首个字符大写。
     //strArr[i] = strArr[i][0]  这就结束了,完全没有,首字符后面的呢?我们应该将大写的首字符和后续的合并起来。那就需用 + 作为拼接字符串,但是后面的那些字母如何表达呢? 让我突然想到字符串的方法有一个silce ()或者substring();
   
     strArr[i] = strArr[i][0].toUpperCase() + strArr[i].slice(1) 
     //举例 意思就是 strArr[2] = "china";
    // strArr[2] = "C"+hina" ; = "China"

 } 
    
}  

但是就这么结束了? 还没完,龙头虎腰,最后还要有个凤尾啊。当下得到的值也只是 ['welcome', 'To' , 'China'] ,还得需要最后一次合, 数组的值想要合成起来就需要Join(); 太帅了我,突然又想到一首歌“终于遇到你,还好我没放弃~~~哦~吼 ~ 爱情来的好不容易”

function convertToCamelCase(str){
   strArr = str.split('-');    //先用split拆成数组,'-'同时也能被消灭掉。
  
   if(strArr[0] ===""){
        strArr.shift();
  }  
   //初始化
   var i = 1;   
   var len = strArr.length;
      
   for(; i < len; i++){
     strArr[i] = strArr[i][0].toUpperCase() + strArr[i].slice(1) ;
  } 
   
    return  strArr.join('')    //得到的结果就是 welcomeToChina
    
}  

 

大功告成。本次解析涉及到的内容

字符串的方法  split() ;  slice() ; substring() ; toUpperCase()

数组的方法:  join();

 

转载请著名出处,本文为“宋王爷”原创,转载不注明出处者,一旦发现将直接向贵站发送邮件,并直接向百度申述。

posted on 2017-08-20 13:14  宋王爷  阅读(669)  评论(1)    收藏  举报

导航