【问题标题】:Remove Index [number] from string [closed]从字符串中删除索引 [number] [关闭]
【发布时间】:2019-12-04 17:42:13
【问题描述】:

使用 Typescript 我有一个对象数组,如下所示:

var errors = [
  { name: "Emails[2]", message: "Email is invalid" }
  { name: "Role", message: "Role is required" }
];

name 可以是:
1. 像"Role"这样的字符串。
2. 后跟括号和数字的字符串,如"Emails[2]"

在 (2) 的情况下,我想将 "Emails[2]" 替换为 "Emails"

每个带有name=text[number] 的对象都会将name 更新为text

我该怎么做?

【问题讨论】:

  • 请向我们展示解决问题的尝试。
  • 你熟悉正则表达式吗?
  • 如何搜索和替换字符串

标签: javascript typescript


【解决方案1】:

您可以使用地图和替换

\[\d+\]$
  • \[ - 匹配 [
  • \d+ - 匹配一位或多位数字
  • \] - 匹配 ]
  • $ - 字符串结束

var errors = [
  { name: "Emails[2]", message: "Email is invalid" },
  { name: "Role", message: "Role is required" },
  { name: "Role random [123]", message: "Role is required" }
];


let op = errors.map(({name,...rest})=>{
  name = name.replace(/\[\d+\]$/,'').trim()
  return {
    name,
    ...rest
  }
})

console.log(op)

【讨论】:

    【解决方案2】:

    您可以尝试使用map()replace() 使用正则表达式/\[.*?\]/

    var errors = [
      { name: "Emails[2]", message: "Email is invalid" },
      { name: "Role", message: "Role is required" }
    ];
    
    errors= errors.map(i => {
      i.name = i.name.replace(/\[.*?\]/,'');
      return i;
    });
    console.log(errors);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-02
      • 2013-10-19
      • 1970-01-01
      相关资源
      最近更新 更多