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