#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть строка like /test/file/sometext/public/image
и вторая строка /test1/file/sometext1/public/image1
.
Я хочу получить подстроку, начинающуюся с file
и заканчивающуюся public
.
Таким образом, первая строка должна возвращаться file/sometext/public/
, а из 2-й строки она должна возвращаться file/sometext1/public/
.
В каждой строке это file
и public
является статическим.
Как я буду делать это в javascript?
В принципе, мне нужно это
str = '/test/file/sometext/public/image';
var str1 = str.replace("file/sometext/public/", "");
Но мне нужен здесь подстановочный знак, чтобы sometext мог заменять любой текст, находящийся между file
и public
. Надеюсь, вы поняли мою точку зрения.
Комментарии:
1. developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/…
2. Для большей гибкости всегда используйте регулярные выражения и группу захвата, на случай, если вы можете расширить свои требования в будущем.
Ответ №1:
Вы могли бы использовать split()
для разделения строки на массив строк, при slice()
этом возвращается мелкая копия части массива в новый объект массива и, наконец join()
, to объединяет все элементы массива в конечную строку :
var parts = '/test/file/sometext/public/image'.split('/');
console.log( parts.slice(2, 5).join('/') );
Ответ №2:
Вы можете сделать это с помощью регулярного выражения.
var str = '/test/file/sometext/public/image';
var reg = /file/[^/]*/public/i;
var replace = str.replace(reg, 'something');
console.log('before',str);
console.log('after',replace);
Комментарии:
1. Разве это не было бы проще и делать то же самое в этом случае ??
file/.*/public/i
?
Ответ №3:
Если все строки имеют одинаковую структуру папок, вы можете разделить их на массив и перестроить его с необходимыми частями, например:
var arr = str = '/test/file/sometext/public/image'.split('/');
var str1 = arr[2] '/' arr[3] '/' arr[4] '/';
console.log(str1);