Problèmes avec indexOf et lastIndexOf sur la sous-chaîne - une Partie de l'URL de la chaîne
Je vais avoir quelques problèmes de briser une chaîne dans la façon dont je le veux. J'ai une url comme ceci:
http://SomeAddress.whatever:portWhatever/someDirectory/TARGETME/page.html
Je vais essayer d'obtenir les TARGETME partie sur la chaîne, à l'aide de sous-chaîne et indexOf au lieu de regex. C'est la fonction que je travaille avec maintenant:
function lastPartofURL() {
//Finding Url of Last Page, to hide Error Login Information
var url = window.location;
var filename = url.substring(url.lastIndexOf('/')+1);
alert(filename);
}
Cependant, quand j'ai écrit ce que j'étais, en ciblant les "page.html" une partie, donc c'est de quoi il en retourne, mais je vais avoir de la difficulté à la reconfiguration de ce à faire ce que je veux faire maintenant.
Si possible, j'aimerais qu'elle proviennent du début de la chaîne plutôt que de la fin, car il y a toujours une url et puis un répertoire avant de ce que je suis en train de cible, mais je suis intéressé par les deux solutions.
Voici une regex qui fait quelque chose de similaire, mais il n'est pas sécurisé (selon JSLint), et donc je ne me dérangerait pas de le remplacer par quelque chose de plus fonctionnel.
/^.*\/.*\/TARGETME\/page.html.*/
Vous devez vous connecter pour publier un commentaire.
Comme déjà répondu par d'autres,
.split()
est bon pour votre cas, toutefois, en supposant que vous avez l'intention de revenir "de la partie de l'avant-dernier" de l'URL (par exemple, le retour "TARGETME" pourhttp://SomeAddress.whatever:portWhatever/dirA/DirB/TARGETME/page.html
ainsi), alors vous ne pouvez pas utiliser numéro de fixe mais plutôt de prendre le point de l'avant-dernier de la matrice:Vous pouvez le faire plus facile avec
string.split()
...Je ne suggèrent que cette méthode puisque vous dites que vous saurez toujours le format de l'URL.
Essayer cette
Voir ici