js算法初级----设置首字母大写算法挑战

给一个字符串返回首字母大写
测试点:
titleCase("I'm a little tea pot") 应该返回一个字符串
titleCase("I'm a little tea pot") 应该返回 "I'm A Little Tea Pot".
titleCase("sHoRt AnD sToUt") 应该返回 "Short And Stout".
titleCase("HERE IS MY HANDLE HERE IS MY SPOUT") 应该返回 "Here Is My Handle Here Is My Spout".


我自己最初的想法:将所有单词拆分开后,再拆分单词,首字母大写,其余字母小写
实现:

function titleCase(str) {
    var word=str.split(' ');
    var sword=[''];
    var Tstr='';
    for(var i=0;i<word.length;i++){
//  	大致思路:把字符串分割成单词后将每一个单词都拆开,变化它的头字母
    	for(var j=0;j<word[i].length;j++){
    		temp='';
    		if(j==0){
    			temp=word[i][0].toUpperCase();
    		}else{
    			temp=word[i][j].toLowerCase();
    		}
    		sword[i]+=temp;
    	}

//      console.log(sword[i]);
        Tstr+=sword[i];
    }
    str=Tstr.replace(/undefined/g,' ');
   console.log(str);
return str;
}

titleCase("i'm a little tea pot");
虽然最终实现了,但是问题很大,打印sowrd时疯狂undefined,如:“undefinedI'm”、“undefinedA”,所以不得以我把它替换为了空格符,后来想通了是因为没有给它赋初值,所以进行了更改:
function titleCase(str) {
    var word=str.split(' ');
    var sword=[];
    for(var i=0;i<word.length;i++){
//  	大致思路:把字符串分割成单词后将每一个单词都拆开,变化它的头字母
    	sword[i]=''; //每次都给他赋初值为空
    	for(var j=0;j<word[i].length;j++){
    		var temp='';
    		if(j==0){
    			temp=word[i][0].toUpperCase();
    		}else{
    			temp=word[i][j].toLowerCase();
    		}
    		sword[i]+=temp;
    	}
    }
    str=sword.join(' ');
   console.log(str);
return str;
}
titleCase("I'm a little tea pot");
在网上看了个大佬的代码,发现我的方法掌握的还是太少了,
比如:
	//把字符串所有的字母变为小写,并根据空格转换成字符数组
	var arr = str.toLowerCase().split(" ");
   //把第一个字符变为大写
    arr[i] = arr[i][0].toUpperCase() + arr[i].substring(1,arr[i].length);


stringObject.substring(start,stop)
参数	描述
start	必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。
stop	
可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。

如果省略该参数,那么返回的子串会一直到字符串的结尾。
一下子可以精简好多代码........努力吧渣渣!
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值