Ruby String contient une sous-chaîne

Ruby String contient une sous-chaîne
Les cordes sont des blocs de construction fondamentaux dans tous les langages de programmation. Chaque programmeur doit avoir une solide compréhension de travailler avec des chaînes et d'effectuer des opérations complexes sur eux.

Une opération typique lorsque vous travaillez avec des chaînes est de déterminer si une chaîne contient une sous-chaîne spécifique. Vous pouvez utiliser ces méthodes pour localiser et désinfecter les commentaires des utilisateurs, empêchant ainsi tout code malveillant.

Dans ce tutoriel, nous vous montrerons comment déterminer si une chaîne contient une sous-chaîne spécifique.

Ruby inclut? Méthode

La façon la plus simple de découvrir si une sous-chaîne spécifique est dans une autre chaîne est à utiliser comprend? méthode intégrée.

Voici un exemple:

str = '
Info:

'
Si Str.inclure?("poste")
met "la méthode HTTP correcte -> post"
autre
met "une méthode HTTP incorrecte"
fin

Dans l'exemple ci-dessus, nous avons un programme simple contenant des informations à partir d'une entrée de formulaire HTML. Nous vérifions si le formulaire contient une méthode post-post-méthode inclue.

Étant donné que la valeur de retour de la méthode est un booléen vrai ou false si la sous-chaîne est disponible ou non, respectivement, nous mettons en œuvre une déclaration if… else pour agir en conséquence.

L'exemple de sortie du script ci-dessus est comme indiqué:

$ substring ruby.RB
Méthode HTTP correcte -> Post

Si nous substituons les données de formulaire et définissons la méthode sur un GET, nous pouvons accéder au bloc Else comme:

str = '
Info:

'
Si Str.inclure?("poste")
met "la méthode HTTP correcte -> post"
autre
met "une méthode HTTP incorrecte"
fin

Nous exécutons le script comme:

$ substring ruby.RB
Méthode HTTP incorrecte

Un inconvénient de l'inclusion? La méthode est sensible à la casse. Cela signifie que la publication et la publication renvoient une fausse valeur.

Par exemple:

str = 'post'
Si Str.inclure?("poste")
met "la méthode HTTP correcte -> post"
autre
met "une méthode HTTP incorrecte"
fin

Si nous exécutons l'exemple ci-dessus, nous devons obtenir une sortie du bloc Else:

$ substring ruby.RB
Méthode HTTP incorrecte

Pour surmonter cela, nous pouvons d'abord convertir la chaîne entière en minuscules ou en majuscules, puis vérifiez si la sous-chaîne est dans la chaîne principale.

Voici un exemple:

str = 'post'
si (str.inclure?("poste".upcase))
met "la méthode HTTP correcte -> post"
autre
met "une méthode HTTP incorrecte"
fin

Dans cet exemple, nous convertissons la sous-chaîne en majuscules, qui correspond à la chaîne principale, et vérifions la valeur.

$ substring ruby.RB
Méthode HTTP correcte -> Post

Utilisation de Regex

Nous pouvons utiliser Regex pour vérifier si une chaîne détient une sous-chaîne spécifique. Ruby retournera nil si le modèle d'expression régulière spécifié n'est pas à l'intérieur de la chaîne.

Par exemple:

str = '
Info:

'
met str = ~ / post /

Dans l'exemple ci-dessus, nous utilisons une expression régulière simple pour vérifier si la chaîne contient la sous-chaîne "Post".

Si nous exécutons le script ci-dessus, nous devrions obtenir une sortie similaire à celle ci-dessous:

$ substring ruby.RB
33

La valeur de retour de l'expression régulière est l'indice initial où le cas de correspondance est trouvé. Dans notre exemple, la chaîne de post commence à partir de l'index 33. Nous pouvons vérifier comme:

str = '…
met Str [33… 36]

Dans l'exemple ci-dessus, nous commençons à partir de l'index initial où la chaîne est trouvée pour correspondre à la longueur de la sous-chaîne:

$ substring ruby.RB
poste

Référence de l'élément Ruby String []

Nous pouvons également utiliser la méthode de référence Ruby String. Nous pouvons passer une chaîne, une valeur d'index ou une expression régulière à l'intérieur d'une paire de crochets.

Exemple d'utilisation:

str = 'post'
met str ['post']
met str ['pas-fond']

Si nous exécutons l'exemple ci-dessus, nous devrions voir une sortie comme:

=> Poster
=> nil

Si la sous-chaîne est disponible, elle renverra la chaîne réelle; Cependant, il retournera nul s'il n'y a pas de sous-chaîne.

Le même cas s'applique aux expressions régulières.

str = 'post'
met str [/ post /]
=> Poster

Nous pouvons également utiliser la méthode ci-dessus pour extraire une sous-chaîne. Par exemple, pour extraire 10 caractères après le match, nous pouvons faire:

str = 'post ------ La chaîne continue ici'
met str [str = ~ / string /, 9]

L'exemple ci-dessus rapportera 9 index après l'index où est la correspondance.

Conclusion

Dans ce guide, vous avez appris à vérifier si une chaîne contient une sous-chaîne spécifique à l'aide de l'inclusion? Méthode, expressions régulières et référence d'élément de chaîne.