JS截取字符串后几位的三种方法

一、前言

  • 适用场景:手机尾号银行卡尾号

二、实现方式

  • 三个方法对字符串进行截取,并且返回一个新的字符串不会对原字符串进行修改
var str = '15123456789';
var result1 = str.slice(-6);
console.log(result1); //456789
var result2 = str.substring(str.length-6);
console.log(result2); //456789
window.location.href = "https://blog.csdn.net/2301_76459194?spm=1011.2266.3001.5343"
var result3 = str.substr(-6);
console.log(result3); //456789

三、方法详解

substring

substring() 方法用于提取字符串中介于两个指定下标之间的字符。

string.substring(start,stop)
  • 1.substring() 方法返回的子串包括 start 处的字符,但不包括 stop 处的字符。
var a = '0123456789'
a.substring(1,5) //1234
  • 2.如果参数 startstop 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。
var a = '0123456789'
a.substring(1,1)  //''
  • 3.如果 startstop 大,那么该方法在提取子串之前会先交换这两个参数。
var a = '0123456789'
a.substring(5,1) //=>a.substring(1,5)  //1234
  • 4.如果 startstop 有负数,那么会把该参数自动转为0,然后继续上述规则。
var a = '0123456789' 
a.substring(5,-1) //=>a.substring(5,0) => a.substring(0,5)  //1234
  • 5.如果 startstop小数(负数直接进行第4条),那么会把该参数向下取整,然后继续上述规则。
var a = '0123456789'
a.substring(5,2.5) //=>a.substring(5,2) => a.substring(2,5)  //234
  • 6.如果 startstop 有字符串,那么会先进行parseInt(),如果转换结果为NaN,那么就转换为0,其余情况继续上述规则。
var a = '0123456789'
a.substring(5,'2.5') // =>a.substring(5,2) => a.substring(2,5) //234
a.substring(5,'ss') // =>a.substring(5,2) =>a.substring(5,0) => a.substring(2,5) //234

slice

slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分

string.slice(start,end)

该方法的两个参数均为位置坐标,和subtring比较像,区别就是该方法支持负数,并且不会交换位置,始终是从startend,如果该区间不存在,那么返回''

  • 1.slice() 方法返回的子串包括 start 处的字符,但不包括 end 处的字符。
var a = '0123456789'
a.slice(1,5) //1234
  • 2.当start或者end负值时,定位方式和substr一直,从右往左数,从1开始。
var a = '0123456789'
//起始点从第1(包括)开始,结束点为从右往左数第1个(不包括)
a.slice(1,-1)  //12345678
  • 3.startend的顺序始终是从左到右,如果最终start的位置在end的右边,那么返回''
var a = '0123456789'
a.slice(2,1)   //2所在的位置是'2',1所在的位置是'1',从2=>1,方向相反,返回为空
a.slice(-2,1)  //-2所在的位置是'8',1所在的位置是'1',从8=>1,方向相反,返回为空
a.slice(-2,-1) //-2所在的位置是'8',-1所在的位置是'9',从8=>9,方向正常,返回为'8'
  • 4.其他情况和substring处理方式一致
 var a = '0123456789'
a.slice('xx','5.5') // => a.slice(0,5) //01234

substr(不推荐)

substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。

string.substr(start,length)
  • 1.substr() 方法返回的子串从 start 处的字符开始(包括)往后截取length长度,如果超过最末端就到最末端结束。
 var a = '0123456789'
 a.substr(1,5)  //12345
  //只会到最末端,多了没用 
 a.substr(1,15) //123456789
  • 2.start可以取负值,表示从字符串尾部往头部开始数(从右到左,注意是从1开始,比如-1 指字符串中最后一个字符),但是截取长度还是从左到右,如果超过最末端就到最末端结束。
 var a = '0123456789'
 //-4表示从右开始数第4个,就是'6',然后取2个长度的字符串,就是'67'
 a.substr(-4,2)  //67
  • 3.如果length负值,那么会直接当成0处理,最终返回""
 var a = '0123456789'
 a.substr(4,-2) // => a.substr(4,0) //0
  • 4.如果start或者length为小数,那么会截取小数部分。
 var a = '0123456789'
 a.substr(1.2,5.2) // => a.substr(1,5) //12345
  • 5.如果 startlength 有字符串,那么会先进行parseInt(),如果转换结果为NaN,那么就转换为0,其余情况继续上述规则。
 var a = '0123456789'
 a.substr('aa','5') // => a.substr(0,5) //01234
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加油乐

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值