Как удалить конец строки, начиная с заданного шаблона?

Скажем, у меня есть строка вроде этого:

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

Как я, используя Javascript и/или jQuery, удаляю часть str, начиная с xxx, до конца str?

Ответ 1

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

Ответ 2

Просто:

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

Ответ 3

Попробуйте следующее:

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

indexOf найдет положение xxx и substring вырезает фрагмент, который вы хотите.

Ответ 4

Это займет все, начиная с начала строки до начала xxx.

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

Ответ 5

Попробуйте использовать 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" и т.д., и, вы заранее не знаете, что они могут быть (то есть: не константа), принятые ответы, как и большинство других, не будут работать.