Duplicate possible:
Javascript StartsWith
Je sais que je peux faire comme ^ = pour voir si un identifiant commence par quelque chose, et j'ai essayé de l'utiliser pour cela, mais cela n'a pas fonctionné ... En gros, je récupère l'URL et je veux définir une classe pour un élément pour les chemins qui commencent d'une certaine manière ...
Alors,
var pathname = window.location.pathname; //gives me /sub/1/train/yonks/459087
Je veux m'assurer que pour chaque chemin commençant par/sub/1, je peux définir une classe pour un élément ...
if(pathname ^= '/sub/1') { //this didn't work...
...
Utilisez stringObject.substring
if (pathname.substring(0, 6) == "/sub/1") {
// ...
}
String.prototype.startsWith = function(needle)
{
return this.indexOf(needle) === 0;
};
Vous pouvez utiliser string.match () et une expression régulière pour cela aussi:
if(pathname.match(/^\/sub\/1/)) { // you need to escape the slashes
string.match()
retournera un tableau de sous-chaînes correspondantes si trouvé, sinon null .
Un peu plus de fonction réutilisable:
beginsWith = function(needle, haystack){
return (haystack.substr(0, needle.length) == needle);
}
Tout d'abord, permet d'étendre l'objet string. Merci à Ricardo Peres pour le prototype, je pense que l’utilisation de la variable 'chaîne' fonctionne mieux que celle 'aiguille' pour la rendre plus lisible.
String.prototype.beginsWith = function (string) {
return(this.indexOf(string) === 0);
};
Ensuite, vous l'utilisez comme ça. Mise en garde! Rend le code extrêmement lisible.
var pathname = window.location.pathname;
if (pathname.beginsWith('/sub/1')) {
// Do stuff here
}
Jetez un coup d'œil à JavaScript substring()
method.