获取字符之间或第一次出现字符之后的子字符串



我有不同版本的id,需要循环并返回子字符串的一部分。

示例1:12345_5678
示例2:12345_5678_90

我想把";5678〃;两个字符串的一部分。到目前为止,我有以下代码:

//let str = '12345_5678';
let str = '12345_5678_90';
let subStr = str.slice(
str.indexOf('_') + 1,
str.lastIndexOf('_'),
);
console.log(subStr);

对于具有"0"的字符串;12345_5678_90";";5678〃;部分返回正确,但对于";12345_5678";字符串返回空,因为我没有第二个"字符串"_&";。我如何才能写一份涵盖这两种情况的声明?

我是否需要检查字符串是否包含1或2"_"在处理子字符串之前?

执行所需操作的另一种方法是通过_split()字符串,然后返回结果数组的第二个元素:

const getId = str => str.split('_')[1];
['12345_5678', '12345_5678_90', 'abc_5678_multi_sections']
.forEach(str => console.log(getId(str)));

这假设字符串中始终至少有1个_字符。如果不是这样的话,那么就需要实现一些额外的验证逻辑。

最新更新