2011-01-10 22 views
25

Estoy tratando de usar la API de datos de youtube para generar una lista de reproducción de video. Sin embargo, las URL de los videos requieren un formato de youtube.com/watch?v=3sZOD3xKL0Y, pero lo que genera la API es youtube.com/watch?v=3sZOD3xKL0Y & feature = youtube_gdata. Entonces, lo que tengo que hacer es poder seleccionar todo después e incluir el signo y eliminarlo de la url. ¿Alguna forma de hacer esto con javascript y algún tipo de expresión regular?eliminar los parámetros url con javascript o jquery

+0

Tome un vistazo a este post: http://stackoverflow.com/questions/738351/recommendation-for-javascript-url-manipulation-library-api/3215670 # 3215670 –

+0

posible duplicado de [codificación querystring de un objeto javascript] (http://stackoverflow.com/question s/1714786/querystring-encoding-of-a-javascript-object) –

Respuesta

26

simple:

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

Modified: esto eliminará todos los parámetros o fragmentos de 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. Eso fue muy rápido. De hecho, descubrí que necesitaré extraer un nodo diferente del feed, eso es único.¿Cómo extraería solo la identificación pasada justo después del video ?: en esta etiqueta - etiqueta: youtube.com, 2008: video: 3sZOD3xKL0Y – mheavers

+2

Creo que en la respuesta simple que has querido escribir: var new_url = old_url.substring (0 , old_url.indexOf ('?')); El ampersand no funcionará :) – theadam

+0

¿Puedes pensar en un escenario donde la [forma más simple] (https://stackoverflow.com/questions/4651990/remove-url-parameters-with-javascript-or-jquery/27771398# 27771398) no funcionará? – goldylucks

1

Se podría utilizar una expresión regular para que coincida con el valor de v y construir la URL a sí mismo ya conoce la dirección URL es 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

Hmm ... Buscando una mejor manera ... aquí es

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

Ese es mi caso específico para volver a cargar la página sin los parámetros: window.location.assign (window.location.href.replace (window.location.search, '')); – gtamborero

21

¿Qué me falta?

Por qué no:

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

¡Funciona perfectamente bien! –

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

Utilice esta función:

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

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

Si desea que todas las partes href, use esto:

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

Bien, estoy usando esto:

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

o:

stripUrl(urlToStrip){ 
     return urlToStrip.split('?')[0].split('&')[0].split('#')[0]; 
    } 
Cuestiones relacionadas