如何从给定的模式开始删除字符串的结尾?

use*_*368 16 javascript

假设我有一个这样的字符串:

var str = "/abcd/efgh/ijkl/xxx-1/xxx-2";
Run Code Online (Sandbox Code Playgroud)

我如何使用Javascript和/或jQuery删除部分str开头xxx,直到结束str

Wil*_*ill 31

str.substring( 0, str.indexOf( "xxx" ) );
Run Code Online (Sandbox Code Playgroud)

  • 注意:使用`str = str.substring(0,str.indexOf("xxx"));`如果打算将修改后的值赋给同一个变量.如果`xxx`没有出现在原始字符串中,这将产生一个空字符串. (4认同)

hay*_*lem 8

只是:

s.substring(0, s.indexOf("xxx"))
Run Code Online (Sandbox Code Playgroud)

处理无效输入和缺少匹配模式的更安全版本将是:

function trump(str, pattern) {
  var trumped = "";  // default return for invalid string and pattern

  if (str && str.length) {
    trumped = str;
    if (pattern && pattern.length) {
      var idx = str.indexOf(pattern);

      if (idx != -1) {
        trumped = str.substring(0, idx);
      }
    }
  }
  return (trumped);
}
Run Code Online (Sandbox Code Playgroud)

你打电话给谁:

var s = trump("/abcd/efgh/ijkl/xxx-1/xxx-2", "xxx");
Run Code Online (Sandbox Code Playgroud)

  • 特朗普应该修剪:D加一:D (2认同)

小智 5

尝试使用string.slice(start, end)

如果您知道要删除的确切字符数,请从示例中:

var str = "/abcd/efgh/ijkl/xxx-1/xxx-2";
new_str = str.slice(0, -11);
Run Code Online (Sandbox Code Playgroud)

这会导致 str_new == '/abcd/efgh/ijkl/'

为什么这很有用: 如果'xxx'指的是任何字符串(如 OP 所说),即:'abc'、'1k3' 等,并且您事先不知道它们可能是什么(即:不是常量),则接受的答案,以及其他大多数将不起作用。