Vérifier si une chaîne contient une sous-chaîne en JavaScript

Harshit Jindal 12 octobre 2023
  1. Utiliser une expression régulière pour vérifier si une chaîne contient une sous-chaîne en JavaScript
  2. Utilisez String.includes() pour vérifier si une chaîne contient une sous-chaîne en JavaScript
  3. Utilisez String.indexOf() pour vérifier si une chaîne contient une sous-chaîne en JavaScript
Vérifier si une chaîne contient une sous-chaîne en JavaScript

Ce didacticiel explique comment vérifier si une chaîne contient une sous-chaîne en JavaScript.

C’est une tâche simple et courante, mais différentes langues la gèrent de différentes manières. Nous verrons les méthodes intégrées dans JavaScript et les méthodes personnalisées pour atteindre l’objectif ci-dessus.

Utiliser une expression régulière pour vérifier si une chaîne contient une sous-chaîne en JavaScript

C’est l’une des méthodes les plus puissantes et traditionnelles pour vérifier la présence d’une sous-chaîne. Cela nous donne beaucoup de flexibilité par rapport aux méthodes intégrées, car avec les méthodes intégrées JavaScript, nous ne pouvons vérifier qu’une chaîne constante et ne pouvons pas modifier la sensibilité à la casse de leur comportement. Nous utiliserons la méthode RegExp.test() pour vérifier les sous-chaînes dans une chaîne.

let str = 'delftstack';
console.log(/stack/.test(str));

Production:

true

Ici, nous utilisons la fonction .test() pour voir si la sous-chaîne stack est présente à l’intérieur de la chaîne delftstack et obtenir true en conséquence.

Mais la beauté des regex réside dans le fait que nous pouvons faire des recherches insensibles à la casse, ce qui n’est pas possible avec les méthodes JavaScript intégrées, et nous pouvons même rechercher des modèles comme une sous-chaîne numérique de longueur fixe sans même savoir ce que c’est.

let str = 'delftstack';
console.log(stack / i.test(str));

Production:

true

Nous ajoutons i à l’expression /stack/, et nous pouvons faire la recherche insensible à la casse.

Utilisez String.includes() pour vérifier si une chaîne contient une sous-chaîne en JavaScript

ES6 a introduit la fonction .includes() qui nous aide à vérifier si une sous-chaîne donnée est présente à l’intérieur de la chaîne. Il renvoie une valeur booléenne indiquant la présence par true ou false. C’est une méthode sensible à la casse, et donc si la sous-chaîne S est comparée à s, elle retournera false.

Cette méthode prend 2 arguments: le premier est la sous-chaîne, et le second est l’index à partir duquel nous voulons commencer la recherche à l’intérieur de la chaîne. Si le deuxième argument est en dehors de la limite de gauche, c’est-à-dire qu’il est inférieur à 0, alors JavaScript démarre la recherche à partir de l’index 0. S’il est supérieur à la longueur de la chaîne, il renvoie directement false.

const str = 'delftstack';
const substr = 'stack';
console.log(str.includes(substr));

Production:

true

Dans le code ci-dessus, nous passons la sous-chaîne à la fonction, et elle renvoie true car stack est présent à l’intérieur de la chaîne delftstack.

const str = 'delftstack';
const substr = 'stack';
console.log(str.includes(substr, 4));

Production:

true

Ce code lance la recherche du mot stack à partir de l’index 5e.

Utilisez String.indexOf() pour vérifier si une chaîne contient une sous-chaîne en JavaScript

Avant que ES6 n’introduise la méthode String.includes(), la seule méthode intégrée était .indexOf(). C’est assez similaire à la méthode String.includes(). Au lieu de renvoyer une valeur booléenne, cette méthode retourne l’index du premier caractère de la sous-chaîne si la sous-chaîne est présente à l’intérieur de la chaîne donnée et -1 si la sous-chaîne n’est pas présente.

const str = 'delftstack';
const substr = 'stack';
console.log(str.indexOf(substr) != -1);

Production:

true

C’est peut-être ancien mais c’est plus précis car il peut être utilisé comme .includes() simplement en ajoutant une vérification au résultat de la fonction pour voir s’il n’est pas égal à -1. Contrairement à .includes(), il nous renvoie l’index exact du début de la sous-chaîne et peut être d’une importance beaucoup plus pratique.

Toutes les méthodes ci-dessus à l’exception de String.includes() sont supportées par tous les principaux navigateurs. String.includes() a été introduit par ES6 et n’est toujours pas pris en charge par Internet Explorer. Une autre méthode pour ce faire sera d’utiliser l’algorithme KMP (Knuth-Morris-Pratt), un algorithme O(n) avec des applications étendues. C’est un sujet énorme en soi, et nous le couvrirons dans un prochain article.

Harshit Jindal avatar Harshit Jindal avatar

Harshit Jindal has done his Bachelors in Computer Science Engineering(2021) from DTU. He has always been a problem solver and now turned that into his profession. Currently working at M365 Cloud Security team(Torus) on Cloud Security Services and Datacenter Buildout Automation.

LinkedIn

Article connexe - JavaScript String