如何在第二个连字符后拆分字符串

我正在通过一个 API 创建用户并预先附加来自另一个 API 的 Id,然后保存它。 在前端获取名称时,它应该只显示没有预先附加 Id 的名称。

示例 1:S20000-KDW255258-用户 1-用户 2-用户 3

预期结果:User1-User2-User3

示例 2:RTW000-RWSTY3500-Testing-Testing-Testing-User

预期结果:测试-测试-测试-用户

我没有得到预期结果的尝试:

userName.split('-').slice(2).join('-');

var secondIndex = userName.indexOf('-', userName.indexOf('-') + 1);
    userName= userName.substring(secondIndex + 1);
    console.log("returned username after split: " + userName);

我怎样才能在第二个连字符之后拆分并获取所有内容?

回答
P
Prof. Janae Wiegand
3周前

您可以通过不同的方式实现这一目标。 一种是使用正则表达式:

string.match(/^.*?-.*?-(.*)$/)[1]
console.log('S20000-KDW255258-User1-User2-User3'.match(/^.*?-.*?-(.*)$/)[1])
console.log('RTW000-RWSTY3500-Testing-Testing-Testing-User'.match(/^.*?-.*?-(.*)$/)[1])
console.log('Testing-Testing-Testing-User'.match(/^.*?-.*?-(.*)$/)[1])
E
Estefania Mraz
3周前

问题是切片运算符不会修改原始数组。

相反,它返回一个浅表副本。 参见 MDN 文档 -> Array.prototype.slice()

意思是当语句 userName.split('-').slice(2).join('-'); 不修改 userName 变量。

所以当你试图获取secondInDex时,你仍然是在对原始值进行操作。

将您的代码更改为

const userNameWithoutId = userName.split('-').slice(2).join('-');

然后修改您的逻辑以针对已清理的用户名工作。 IE。