【问题标题】:javascript substring helpjavascript 子字符串帮助
【发布时间】:2010-11-21 12:13:44
【问题描述】:

我有一个字符串“2500 - SomeValue”。如何删除“SomeValue”中“S”之前的所有内容?

var x = "2500 - SomeValue";
var y = x.substring(x.lastIndexOf(" - "),
// this is where I'm stuck, I need the rest of the string starting from here. 

感谢您的帮助。

~ck

【问题讨论】:

    标签: javascript string parsing substring


    【解决方案1】:
    x.substring(x.lastIndexOf(" - "),x.length-1); //corrected
    

    【讨论】:

    • 这实际上会导致运行时错误,因为x.length 超出了字符串的末尾。我想你的意思是x.length - 1
    【解决方案2】:

    这只是:

    var y = x.substring(x.lastIndexOf(" - ") + 3);
    

    当您省略第二个参数时,它只会为您提供字符串末尾的所有内容。

    编辑:由于您想要 after 中的所有内容“ - ”,因此我在起点添加了 3 以跳过这些字符。

    【讨论】:

    • 在问题中,他要求从“S”开始的所有内容,去掉“-”部分。当然,代码与你所拥有的一致。
    【解决方案3】:

    试试

    var y = x.split(" ",2);
    

    那么您将拥有一个子字符串数组。第三个 y[2] 将是您所需要的。

    【讨论】:

    • 当你使用 'split(' ', 2)' 时,你最终会得到一个最多包含 2 个元素的数组,如果有 2 个或更多的空格,其余的将被丢弃.. . 所以这不适用于上面的例子。您正在尝试使用“String.split(..., maximum)”,就好像它在 Python 中一样有效;不幸的是,JavaScript 并不明智。
    • 使用损坏的最大拆分功能的替代方法是,例如:“x.split(' - ').slice(1).join(' - ')”,将任何额外的 ' - ' 字符串。
    【解决方案4】:
    var y = x.substring(0, x.lastIndexOf(' - ') + 3)
    

    【讨论】:

      【解决方案5】:

      var y = x.slice(x.lastIndexOf(" - "), x.length - 1);

      无论该值是多少或有多长,这都会将值作为字符串返回,并且与数组无关。

      【讨论】:

      • 不允许切片 -1 等同于 x.length-1?
      • slice 需要一个终端值。如果字符串的长度可变,那么这就是您找到静态测量长度的方式。值 -1 将不起作用,因为值 -1 作为索引返回未定义。在这种情况下,这可能会引发错误。
      【解决方案6】:

      将 3(“ - ”的长度)添加到最后一个索引并省略第二个参数。将一个参数传递给子字符串时的默认设置是转到字符串的末尾

      var y = x.substring(x.lastIndexOf(" - ") + 3);
      

      【讨论】:

        【解决方案7】:
        var y = x.slice(x.lastIndexOf("-")+2);
        

        通常,我们没有空间,所以我们写+1,但在你的情况下+2 工作正常。

        【讨论】:

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