全面解读字符串转换为驼峰格式
/*
* 实现函数 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();
转载请著名出处,本文为“宋王爷”原创,转载不注明出处者,一旦发现将直接向贵站发送邮件,并直接向百度申述。