2013-06-02 4 views
3

Donc, fondamentalement, je veux faire quelque chose de différent pour un site si l'URL contient une chaîne spécifique, permet de dire: 'foo'javascript instruction if si l'URL contient substring

Voilà donc ce que j'ai:

var url = document.URL; 
var substring = 'foo'; 
if(the substring is in the url){ 
//do something 
} 
else{ 
//do something 
}; 

Alors, que se passerait-il dans le if() pour rendre cela possible?

+1

Recherche: javascript chaîne contient – Dave

+0

sous-chaîne (malheureusement Stack Overflow ne me laisse pas vous signaler lmgtfy ...) – Dave

+3

[Permettez-moi de vous aider] (http://bit.ly/10JUfYN) – Jashwant

Répondre

3

Vous pouvez utiliser la méthode indexOf

// Function is used to determine whether a string contains another string 
function contains(search, find) { 
    ///<summary>Sees if a string contains another string</summary> 
    ///<param type="string" name="search">The string to search in</param> 
    ///<param type="string" name="find">The string to find</param> 
    ///<returns type="bool">A boolean value indicating whether the search string contained the find string</returns> 
    return search.indexOf(find) !== -1; 
} 

Voici quelques Exemple d'utilisation:

var url = document.URL; 
var substring = 'foo'; 
if (contains(url.toLowerCase(), substring.toLowerCase()) { 
// Contains string 
} 

La fonction contains est cas sentitive, howe ver; comme démontré dans mon exemple, vous pouvez le rendre incasensible en appelant le StringPrototype.toLowerCase Méthode

1

Vous pouvez utiliser indexOf par exemple:

if (url.indexOf(substring)>=0) { 
0

Ceci est une réponse prospective et ne fonctionnera pas dans les implémentations actuelles. ECMAScript 6 est actuellement en train de définir une méthode String.prototype.contains

Cela vous permettra de faire:

if (url.contains(substring)) { 

Encore une fois, ceci est un ajout futur. Actuellement ECMAScript 6 (Harmony) est en cours de rédaction, et cela pourrait techniquement être supprimé, bien que cela ne semble pas probable.

projet actuel:

15.5.4.24 String.prototype.contains (searchString, position = 0)

Le procédé comporte prend deux arguments, searchString et la position, et effectue la étapes suivantes:

  1. Soit O soit CheckObjectCoercible(this value).
  2. Soit S soit ToString(O).
  3. ReturnIfAbrupt(S).
  4. Soit searchStr soit ToString(searchString).
  5. ReturnIfAbrupt(searchStr).
  6. Soit pos soit ToInteger(position). (Si position est undefined, cette étape produit la valeur 0).
  7. ReturnIfAbrupt(pos).
  8. Soit len le nombre d'éléments dans S.
  9. Soit start soit min(max(pos, 0), len).
  10. Soit searchLen le nombre de caractères dans searchStr.
  11. S'il existe un entier k non inférieur à commencer tel que k + searchLen est pas supérieure à len, et pour tous les entiers non négatifs j moins de searchLen, le caractère à la position k+j de S est le même que le caractère à la position j de searchStr , retourne true; mais s'il n'y a pas de nombre entier k, renvoyez false.
+0

Si vous avez du mal à comprendre cette réponse, veuillez demander plutôt que de voter en bas, même si je ne sais pas comment cela pourrait être plus clair ou bien documenté que ce que j'ai décrit. –