今天碰到个事儿,就是要处理一串字符,但我不想要全部,我只要中间的一小段,这可咋整?这就要说到字符串截取。我赶紧去网上搜搜,发现JS里头有好几个方法都能干这活儿,像substring()
、slice()
、substr()
,看得我眼花缭乱。
不过咱不能慌,得一个一个试。我先拿substring()
开刀。这玩意儿挺有意思,要告诉它从哪儿开始,到哪儿结束。比如,我有一串字符“今天天气真不错”,我想把“天气真不错”给弄出来,那我就得这么写:
let str = "今天天气真不错";
let newStr = *(2,7);
*(newStr); // 输出:天气真不错
你看,这不就妥嘛substring(2,7)
,意思就是从第3个字开始(因为是从0开始数的),一直到第7个字,但不包括第7个字。还挺讲究!
然后我又试试slice()
,这家伙跟substring()
差不多,也能指定开始和结束的位置。不过slice()
更厉害一点,它能接受负数!啥意思?就是可以从屁股后头开始数。比如,我想把“不错”俩字弄出来,可以这么写:
let str = "今天天气真不错";
let newStr = *(-2);

*(newStr); // 输出:不错
slice(-2)
,意思就是从倒数第2个字开始,一直到这可真方便!
我又试下substr()
,这个方法有点不一样。它也要指定开始位置,但第二个参数不是结束位置,而是要截取的长度。比如,我还是想弄出“天气真不错”,就得这么写:
let str = "今天天气真不错";
let newStr = *(2,5);
*(newStr); // 输出:天气真不错
substr(2,5)
,意思就是从第3个字开始,截取5个字。这也能达到目的,不过我个人还是更喜欢substring()
和slice()
,感觉更直观一些。
总结一下
substring(start, end)
:从start
开始,到end
结束,但不包括end
。slice(start, end)
:跟substring()
差不多,但能用负数,表示从后往前数。substr(start, length)
:从start
开始,截取length
个字符。
这三个方法,各有各的特点,具体用哪个,就看你自己的习惯和需求。反正我是把它们都记在小本本上,以后再碰到这种事儿,就不怕!