Манипулирование строкой Javascript, получение части строки

#javascript #regex #web

#javascript #регулярное выражение #веб

Вопрос:

У меня есть URL, подобный следующему.

http:// myipaddress/folder1/folder2/themes/index.html

Кто-нибудь знает о наилучшем подходе, позволяющем всегда захватывать то, что было раньше, и не включать / themes / с использованием методов javscript string manipulation reg exp. Первый бит будет регулярно отличаться от /themes/index.html которая является статической

Комментарии:

1. str.split("/themes")[0]

2. если вы уверены, что «themes/index.html » является статическим, просто замените его пустой строкой "http:// myipaddress/folder1/folder2/themes/index.html".replace("/themes/index.html", "")

3.@Tommi: этот подход предполагает, что то, что следует /themes , всегда известно заранее, что может быть не так.

4. OP сказал «the /themes/index.html которая является статической »

5. @tymeJV Почему бы тебе не сделать это ответом?

Ответ №1:

Вы могли бы использовать предварительный просмотр, чтобы получить все тексты до /themes ,

 > var str = 'http:// myipaddress/folder1/folder2/themes/index.html';
undefined
> var patt1 = /^.*(?=/themes)/gi;
undefined
> var result = str.match(patt1);
undefined
> console.log(result);
[ 'http:// myipaddress/folder1/folder2' ]
  

Ответ №2:

вы можете использовать метод разделения javascript и удалить темы из массива строк, заданного методом разделения, а затем использовать метод объединения, чтобы объединить его с вашим разделителем (‘/’)

 function removeFromStr(str,whatToRemove){
var splitted = str.split('/'),
    filtered = splitted.filter(function(el){
        return el !== whatToRemove;
    });
    return filtered.join('/');
}
test = removeFromStr('http://myipaddress/folder1/folder2/themes/index.html','themes');

console.log(test);