2011-09-27 11 views
8

Digamos que tengo una URL:JavaScript indexOf() - cómo conseguir índice específico

http://something.com/somethingheretoo 

y quiero conseguir lo que es después de la tercera instancia de /?

algo así como el equivalente a indexOf() que me permite ingresar la instancia de la barra invertida que quiero.

+0

Entonces, ¿cuál es la pregunta? ¿Qué has intentado? La pregunta muestra poco o ningún esfuerzo por su parte. – J0HN

+0

Intenté buscar en Google y no obtuve nada. –

+0

¿Has intentado escribirlo tú mismo? :) – J0HN

Respuesta

5

Si sabe que comienza con http:// o https://, simplemente pasar de largo esa parte con este de una sola línea:

var content = aURL.substring(aURL.indexOf('/', 8)); 

Esto le da más flexibilidad si hay múltiples barras de ese segmento que desee.

1

Si usted quiere meter a indexOf:

var string = "http://something/sth1/sth2/sth3/" 
var lastIndex = string.indexOf("/", lastIndex); 
lastIndex = string.indexOf("/", lastIndex); 
lastIndex = string.indexOf("/", lastIndex); 
string = string.substr(lastIndex); 

Si desea obtener la ruta de ese URL dado, también se puede utilizar un RE:

string = string.match(/\/\/[^\/]+\/(.+)?/)[1]; 

esta re búsquedas de " // ", acepta cualquier cosa entre" // "y la siguiente" / ", y devuelve un objeto. Este objeto tiene varias propiedades. propery [1] contiene la subcadena después de la tercera /.

+0

usando división es más corto y más fácil de leer. – PiTheNumber

0

En su caso, puede usar el método lastIndexOf() para obtener la 3ra barra diagonal.

+5

Lo último no es lo mismo que el tercero, incluso si así parece en el ejemplo. – Stefan

+0

Muy cierto, pero para la pregunta de OP, hice la suposición de que quería la última parte del camino y usé la frase comadreja "En tu caso" :) – Pat

3
s = 'http://something.com/somethingheretoo'; 
parts = s.split('/'); 
parts = parts.slice(0, 2); 
return parts.join('/'); 
+0

Después del tercer '/' no significa "entre el tercero y el cuarto" – J0HN

+0

no gran cosa. véase más arriba. – PiTheNumber

+0

Vea mi comentario a continuación, en http://stackoverflow.com/questions/7570276/javascript-indexof-how-to-get-specific-index/7570349#7570349. –

1

Otro enfoque es utilizar la función de Javascript "split":

var strWord = "me/you/something"; 
var splittedWord = strWord.split("/"); 

splittedWord [0] volvería "me"

splittedWord [1] volvería "que"

splittedWord [2] devolvería "algo"

+1

'var strWord =" me/you/something/haha ​​"'. 'splittedWord [3]' = "algo", mientras que OP quiere hacer coincidir "algo/jaja". –

1

Parece que quiere el pathname. Si estás en un navegador, mantenga un elemento útil a ...

var _a = document.createElement('a'); 

... y deja que haga el análisis para usted.

_a.href = "http://something.com/somethingheretoo"; 

alert(_a.pathname.slice(1)); // somethingheretoo 

DEMO:http://jsfiddle.net/2qT9c/

+1

¡agradable! me gusta esto – epoch

0

intentar algo como la siguiente función, que devolverá el índice de la enésima aparición de la cadena de búsqueda s, o -1 si hay n-1 o menos partidos .

String.prototype.nthIndexOf = function(s, n) { 
    var i = -1; 
    while(n-- > 0 && -1 != (i = this.indexOf(s, i+1))); 
    return i; 
} 

var str = "some string to test"; 

alert(str.nthIndexOf("t", 3)); // 15 
alert(str.nthIndexOf("t", 7)); // -1 
alert(str.nthIndexOf("z", 4)); // -1 

var sub = str.substr(str.nthIndexOf("t",3)); // "test" 

Por supuesto, si usted no desea agregar la función de String.prototype se puede tener como función independiente agregando otro parámetro para pasar en la cadena que desea buscar.

Cuestiones relacionadas