JavaScript如何按首个分隔符分割字符串并获取其后所有内容
实现方案
你可以选择以下任意一种方案实现需求,均兼容主流运行环境:
方案1:indexOf + slice(性能最优)
直接查找第一个分隔符的位置,仅做一次截取操作,不需要对全字符串做分割处理,性能最好,同时兼容分隔符不存在的边界场景:
const x = 'aa-bb-cc-dd' const separator = '-' const firstSeparatorIndex = x.indexOf(separator) // 处理字符串中没有对应分隔符的情况 const result = firstSeparatorIndex === -1 ? '' : x.slice(firstSeparatorIndex + separator.length) console.log(result) // 输出:bb-cc-dd
方案2:split + slice + join(写法最简洁)
将字符串按分隔符拆分后,丢弃第一个元素,再用原分隔符拼接剩余元素:
const x = 'aa-bb-cc-dd' const result = x.split('-').slice(1).join('-') console.log(result) // 输出:bb-cc-dd
方案3:正则匹配
通过正则捕获第一个分隔符之后的所有内容:
const x = 'aa-bb-cc-dd' const matchResult = x.match(/-([\s\S]*)/) const result = matchResult ? matchResult[1] : '' console.log(result) // 输出:bb-cc-dd
原写法错误原因
x.split('-')[1]:仅取了分割后数组的第二个元素,因此只会返回bbx.split('-').pop():取了分割后数组的最后一个元素,因此只会返回ddx.split('-')[1].pop():x.split('-')[1]是字符串类型,没有pop方法,运行会直接报错
内容的提问来源于stack exchange,提问作者seriously
相关产品推荐
相关产品推荐

