Javascript--确认末尾字符算法挑战解法--substr()函数解法

原题链接

检查一个字符串(str)是否以指定的字符串(target)结尾。

如果是,返回true;如果不是,返回false。解法如下:

function confirmEnding(str, target) {
// "Never give up and good luck will find you."
// -- Falcor

return str.substr(str.length - target.length) == target ? true : false;
}

confirmEnding("Bastian", "n");

说实话我是在其他人的博客看到别人的文章才知道用哪个方法来写的,substr(start,length),但是直接照搬对自己学习没什么作用,还是从基础写法写起先。

小白写法:

function confirmEnding(str, target) {
 if(str.substr(str.length - target.length)==target){
 	return true;
 }
 else{
     return false;
 }
}

confirmEnding("Bastian", "n");

解析:

通过if语句判断条件是否符合,符合的话返回true,反之返回false,在if语句中利用substr()方法对字符串进行判断。substr(start,length)中,start和length分别是指截取字符串的开始位置和长度,那为什么是用的str.length - target.length当作start的值?emmm。。。str.length是指传入的str的字符串长度(就是被截取的那个字符串),target是指传入的target的字符串长度(说白了就是第二个参数的长度),至于为什么要用start减去length当截取字符串的开始位置,你不会想么真的是,这样得出来的值就是子串的开始位置下标啊。

ok,既然知道从哪开始截取了,那为什么不设置substr()函数的length值,这不是废话么,。。这道题说的就是判断末尾那几个字符是不是跟你给的第二个参数(就是target值)一致,因为substr()函数不设置length的话就是从截取位置直接截到最后,子串的长度等于length值,所以到str.substr(str.length - target.length)这里就已经能把题目要求的被截取字符串的末尾几个字符截出来了,接下来就是判断了。

substr()函数返回的值为字符串类型,将str.substr(str.length - target.length)的值拿去和传入的target值对比,如果两个值相等,即返回true,反之则为返回false。

进阶写法:

使用三元运算符来改动上面的代码

function confirmEnding(str, target) {
    var a=str.substr(str.length - target.length) == target ? true : false;
    return a;
}

confirmEnding("Bastian", "n");

代码没错,但是没必要定义一个新变量,可以直接返回str.substr(str.length - target.length) == target ? true : false;的值,故此将代码修改成下面这样

function confirmEnding(str, target) {
    return str.substr(str.length - target.length) == target ? true : false;
}

confirmEnding("Bastian", "n");

将代码尽可能精简

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值