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

ltqd579y  于 2023-05-08  发布在  TypeScript
关注(0)|答案(2)|浏览(145)

我通过一个API创建用户,并从另一个API预先添加ID,然后保存它。当在前端获取名称时,它应该只显示没有预先附加ID的名称。
示例1:S20000-KDW 255258-User 1-User 2-User 3

**预期结果:**User 1-User 2-User 3

示例2:RTW 000-RWSTY 3500-测试-测试-测试-用户

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

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

getUserName(userName: string) {

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

    const newName = userName.match("/^.*?-.*?-(.*)$/)[1]")
    console.log("New name: " + newName);
    return newName;
}

我如何拆分并获得第二个连字符后的所有内容?

fwzugrvs

fwzugrvs1#

问题是slice运算符不修改原始数组。
而是返回浅拷贝。参见MDN文档-> Array.prototype.slice()
这意味着当语句userName.split('-').slice(2).join('-');不修改userName变量时。
因此,当你试图获取secondInDex时,你仍然在对原始值进行操作。
将代码更改为

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

然后修改您的逻辑以处理已清除的用户名。即

ego6inou

ego6inou2#

你可以通过不同的方式来实现这一点。一个是使用regex:

string.match(/^.*?-.*?-(.*)$/)[1]
function getUserName(userName) {
  return userName.match(/^.*?-.*?-(.*)$/)[1]
}

console.log(getUserName('S20000-KDW255258-User1-User2-User3'))
console.log(getUserName('RTW000-RWSTY3500-Testing-Testing-Testing-User'))
console.log(getUserName('Testing-Testing-Testing-User'))

相关问题