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

How to remove the end of a string, starting from a given pattern?

本文关键字:字符串 删除 开始 模式      更新时间:2023-09-26

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

var str = "/abcd/efgh/ijkl/xxx-1/xxx-2";

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

str.substring( 0, str.indexOf( "xxx" ) );

只是:

s.substring(0, s.indexOf("xxx"))

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

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);
}

你会打电话给:

var s = trump("/abcd/efgh/ijkl/xxx-1/xxx-2", "xxx");

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

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

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

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

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

试试这个:

str.substring(0, str.indexOf("xxx"));

indexOf会找到xxx的位置,substring会剪出你想要的一块。

这将采取从字符串的开头到xxx开头的所有内容。

str.substring(0,str.indexOf("xxx"));