2011-01-10 2 views
25

Я пытаюсь использовать данные apt youtube для создания списка воспроизведения видео. Однако для URL-адресов видео требуется формат youtube.com/watch?v=3sZOD3xKL0Y, но то, что генерирует api, - это youtube.com/watch?v=3sZOD3xKL0Y & feature = youtube_gdata. Так что мне нужно сделать, это выбрать все после и включить амперсанд и удалить его из URL-адреса. Любой способ сделать это с помощью javascript и какого-то регулярного выражения?удалить параметры URL с javascript или jquery

+0

Посмотрите на этот пост: http://stackoverflow.com/questions/738351/рекомендация-for-javascript-url-manipulation-library-api/3215670 # 3215670 –

+0

Возможный дубликат [кодировка запроса на запуск javascript-объекта] (http://stackoverflow.com/question s/1714786/querystring-encoding-of-a-javascript-object) –

ответ

26

Простой:

var new_url = old_url.substring(0, old_url.indexOf('?')); 

Modified: это будет удалить все параметры или фрагменты из URL

var oldURL = [YOUR_URL_TO_REMOVE_PARAMS] 
var index = 0; 
var newURL = oldURL; 
index = oldURL.indexOf('?'); 
if(index == -1){ 
    index = oldURL.indexOf('#'); 
} 
if(index != -1){ 
    newURL = oldURL.substring(0, index); 
} 
+0

Wow. Это было молниеносно. Я фактически обнаружил, что мне нужно будет вытащить другой узел из фида, хотя это уникально.Как я могу извлечь только идентификатор, переданный сразу после видео: в этом теге - tag: youtube.com, 2008: video: 3sZOD3xKL0Y – mheavers

+2

Я думаю, что в простом ответе вы намеревались ввести: var new_url = old_url.substring (0 , old_url.indexOf ('?')); Амперсанд не будет работать :) – theadam

+0

Можете ли вы подумать о сценарии, где [самый простой способ] (https://stackoverflow.com/questions/4651990/remove-url-parameters-with-javascript-or-jquery/27771398# 27771398) не будет работать? – goldylucks

1

Вы можете использовать регулярные выражения, чтобы соответствовать значению v и построить URL-адрес себя, так как вы знаете, что URL является youtube.com/watch?v = ...

http://jsfiddle.net/akURz/

var url = 'http://youtube.com/watch?v=3sZOD3xKL0Y'; 
alert(url.match(/v\=([a-z0-9]+)/i)); 
16

Хм ... в поисках лучшего пути ... вот это

var onlyUrl = window.location.href.replace(window.location.search,''); 
+0

Это мой конкретный случай для перезагрузки страницы без параметров: window.location.assign (window.location.href.replace (window.location.search, '')); – gtamborero

21

Что мне не хватает?

Почему нет:

url.split('?')[0] 
+0

Работает отлично! –

2
//user113716 code is working but i altered as below. it will work if your URL contain "?" mark or not 
//replace URL in browser 
if(window.location.href.indexOf("?") > -1) { 
    var newUrl = refineUrl(); 
    window.history.pushState("object or string", "Title", "/"+newUrl); 
} 

function refineUrl() 
{ 
    //get full url 
    var url = window.location.href; 
    //get url after/ 
    var value = url = url.slice(0, url.indexOf('?')); 
    //get the part after before ? 
    value = value.replace('@System.Web.Configuration.WebConfigurationManager.AppSettings["BaseURL"]',''); 
    return value;  
} 
0

Используйте эту функцию:

var getCleanUrl = function(url) { 
 
    return url.replace(/#.*$/, '').replace(/\?.*$/, ''); 
 
}; 
 

 
// get rid of hash and params 
 
console.log(getCleanUrl('https://sidanmor.com/?firstname=idan&lastname=mor'));

Если вы хотите, чтобы все HREF части, используйте:

var url = document.createElement('a'); 
 
url.href = 'https://developer.mozilla.org/en-US/search?q=URL#search-results-close-container'; 
 

 
console.log(url.href); // https://developer.mozilla.org/en-US/search?q=URL#search-results-close-container 
 
console.log(url.protocol); // https: 
 
console.log(url.host); // developer.mozilla.org 
 
console.log(url.hostname); // developer.mozilla.org 
 
console.log(url.port); // (blank - https assumes port 443) 
 
console.log(url.pathname); // /en-US/search 
 
console.log(url.search); // ?q=URL 
 
console.log(url.hash); // #search-results-close-container 
 
console.log(url.origin); // https://developer.mozilla.org

0

Ну, я использую это:

stripUrl(urlToStrip){ 
     let stripped = urlToStrip.split('?')[0]; 
     stripped = stripped.split('&')[0]; 
     stripped = stripped.split('#')[0]; 
     return stripped; 
    } 

или:

stripUrl(urlToStrip){ 
     return urlToStrip.split('?')[0].split('&')[0].split('#')[0]; 
    } 
Смежные вопросы