【问题标题】:Return only text after last underscore in JavaScript string仅返回 JavaScript 字符串中最后一个下划线后的文本
【发布时间】:2012-12-12 02:43:20
【问题描述】:

如果我有这样的字符串:

var str = 'Arthropoda_Arachnida_Zodariidae_Habronestes_hunti';

我怎样才能得到最后一个下划线之后的字符串的最后一部分?

在没有下划线的情况下直接返回原字符串。

在这种情况下,我只想要'hunti'

【问题讨论】:

标签: javascript


【解决方案1】:
var index = str.lastIndexOf("_");
var result = str.substr(index+1);

【讨论】:

  • IMO 更喜欢这种方法。另一种方法需要更多的内存和更多的处理。它必须创建数组,只是为了获取最后一项,然后丢弃数组的其余部分。在您发布的示例中没什么大不了的,但是这种方法是两行而不是一行,我认为同样具有可读性和功能性。所以我更喜欢这个答案。
  • 这种方法对我来说不太美观,因为它感觉有点冗长,但我愿意承认它更快。不过,除非他的琴弦很长而且他已经这样做了数千次,否则我怀疑这会产生明显的不同。
  • @EliGassert — 性能不太可能成为问题,但与其他建议的方法相比,子字符串是 much faster 是正确的。这仅取决于 OP 想要如何处理它。
  • 这个答案是正确的,但您不需要单独执行这些步骤。 str.substring(str.lastIndexOf('_') + 1);
【解决方案2】:

这很简单。用下划线分割字符串,取最后一个元素。

var last = str.split("_").pop();

这甚至可以在字符串不包含任何下划线时工作(它会根据需要返回原始字符串)。

【讨论】:

    【解决方案3】:

    你可以使用正则表达式:

    'Arthropoda_Arachnida_Zodariidae_Habronestes_hunti'.match(/[^_]*$/)[0];
    

    【讨论】:

      猜你喜欢
      • 2018-09-28
      • 1970-01-01
      • 2016-04-02
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 2021-01-01
      相关资源
      最近更新 更多