2012-06-04 20 views
13

necesito para eliminar la última parte de la url de un lapso ..último elemento de URL

tengo

<span st_url="http://localhost:8888/careers/php-web-developer-2" 
st_title="PHP Web Developer 2" class="st_facebook_large" displaytext="facebook" 
st_processed="yes"></span></span> 

Y tengo que tomar la st_url y retire la php-web-developer-2 de ella por lo es solo http://localhost:8888/careers/.

Pero no estoy seguro de cómo hacerlo. php-web-developer-2 no siempre será eso, pero no tendrá ningún / en él. Siempre será una cadena separada -.

Cualquier ayuda !! ??

Respuesta

8
$('span').attr('st_url', function(i, url) { 
    var str = url.substr(url.lastIndexOf('/') + 1) + '$'; 
    return url.replace(new RegExp(str), ''); 
}); 

DEMO

+1

nota del PLZ que esta solución no es genérico. Si la última parte de su URL ocurre en otro lugar de la URL también, dará un resultado incorrecto; p.ej. 'http://somewhere.com/test/e' fallará. La respuesta de Gisway parece ser mejor. – dotNET

+0

Esta solución tiene un error muy grande porque si la URL es '" http: // localhost: 8888/careers1/careers "' el resultado será '" http: // localhost: 8888/1/career "', el primero '" careers "' se ha eliminado – jscripter

+0

Su demostración necesita algo de trabajo, ya que no demuestra una solución. – mikoop

0

En primer lugar es necesario analizar la etiqueta. A continuación, intenta extraer el valor de st_url, que es tu url. Luego use un ciclo del último carácter de la url extraída y omítelos hasta que vea un '/'. Así es como debes extraer lo que quieres. Tenga esto en cuenta e intente escribir el código.

2

Se puede ver que funcione aquí: http://jsfiddle.net/xKxLR/

var url = "http://localhost:8888/careers/php-web-developer-2"; 
var regex = new RegExp('/[^/]*$'); 
console.log(url.replace(regex, '/')); 
+0

hm ... dudaba sobre '*' o '+' ... Tu versión permite una cola vacía "http: // xxx/yyy /", la mía no, ambas parecen funcionar (en la mía, no se realiza ninguna sustitución, supongo) – xtofl

2

se puede utilizar una expresión regular para analizar la 'última pieza de la url':

var url="http://localhost:8888/careers/php-web-developer"; 

var baseurl=url.replace(
    new RegExp("(.*/)[^/]+$"), 
    "$1")); 
cosa

la expresión regular básicamente dice: " haga coincidir cualquier cosa, luego una barra y luego todas las barras oblicuas hasta el final de la cadena ".

La función de reemplazo toma esa parte correspondiente y la reemplaza con la parte "cualquier cosa, luego una barra diagonal" de la cadena.

RegexBuddy tiene una gran cantidad de información sobre todo esto.

+0

Prefiero la expresión regular. Esta debería ser la respuesta aceptada – jscripter

9

Utilice esto.

$('span').attr('st_url', function(i, url) { 
    var to = url.lastIndexOf('/') +1; 

    x = url.substring(0,to); 
    alert(x); 
})​ 

Se puede ver Demo

+3

Quite el '+ 1' si desea eliminar la barra posterior –

9

tan simple como esto:

var to = url.lastIndexOf('/'); 
to = to == -1 ? url.length : to + 1; 
url = url.substring(0, to); 
+0

Funciona mejor porque si tiene una coincidencia de palabras con la ruta, la sustitución funcionará eliminando la primera coincidencia –

Cuestiones relacionadas