【问题标题】:JS : Remove all strings which are starting with specific characterJS:删除所有以特定字符开头的字符串
【发布时间】:2018-03-27 11:40:08
【问题描述】:

我有一个包含名称的数组。其中一些以点 (.) 开头,其中一些在中间或其他地方有点。我需要删除所有仅以点开头的名称。我寻求帮助以更好地使用 JavaScript。

var myarr = 'ad, ghost, hg, .hi, jk, find.jpg, dam.ark, haji, jive.pdf, .find, home, .war, .milk, raj, .ker';
var refinedArr = ??

【问题讨论】:

  • 你有一个字符串。如果你用逗号分割你有一个数组。使用过滤器或地图删除字符串
  • 您应该将您尝试过的代码作为minimal reproducible example添加到您的问题中。
  • myarr 实际上不是一个数组。它是一个字符串。这是实际变量还是代码中的数组?
  • 是的,它是一个字符串,在拆分之前。谢谢。

标签: javascript arraylist


【解决方案1】:

您可以使用过滤功能,您可以使用 item[0] 访问每个单词的首字母。您确实需要先拆分字符串。

var myarr = 'ad, ghost, hg, .hi, jk, find.jpg, dam.ark, haji, jive.pdf, .find, home, .war, .milk, raj, .ker'.split(", ");
var refinedArr = myarr.filter(function(item) {
  return item[0] != "."
});

console.log(refinedArr)

【讨论】:

    【解决方案2】:

    使用filterstartsWith

    let myarr = ['ad', 'ghost', 'hg', '.hi', 'jk'];
    let res = myarr.filter(e => ! e.startsWith('.'));
    console.log(res);

    【讨论】:

    • 那太蹩脚了。
    • 是的,跛脚和悲伤...@mplungjan
    • 我知道它显示在链接的 MDN 文档中,但只是为了完整性和快速概览,IE 不支持 startsWith
    • 一切都不相等。这就是为什么有些人觉得有些问题如此无关紧要。振作起来!
    【解决方案3】:

    您可以使用 RegEx \B\.\w+,? ? 并替换为空字符串。

    • \B 匹配非单词字符

    • \. 匹配一个点

    • \w+ 匹配一个或多个单词字符

    • ,? 匹配 01 ,

    • [space]? 匹配 01 [space]

    演示:

    const regex = /\B\.\w+,? ?/g;
    const str = `ad, ghost, hg, .hi, jk, find.jpg, dam.ark, haji, jive.pdf, .find, home, .war, .milk, raj, .ker`;
    const subst = ``;
    
    // The substituted value will be contained in the result variable
    const result = str.replace(regex, subst);
    
    console.log('Substitution result: ', result);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-22
      • 2022-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-23
      相关资源
      最近更新 更多