web-dev-qa-db-fra.com

Vérifiez si la chaîne commence par quelque chose?

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... 
        ... 
257
n00b0101

Utilisez stringObject.substring

if (pathname.substring(0, 6) == "/sub/1") {
    // ...
}
366
Philip Reynolds
String.prototype.startsWith = function(needle)
{
    return this.indexOf(needle) === 0;
};
182
Ricardo Peres

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 .

83
Cros

Un peu plus de fonction réutilisable:

beginsWith = function(needle, haystack){
    return (haystack.substr(0, needle.length) == needle);
}
38
RobKohr

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
}
23
Tim

Jetez un coup d'œil à JavaScript substring() method.

2
rochal