Получение подстроки из строки с использованием подстановочного знака в javascript

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