L’opérateur de contenu

L’opérateur de contenu permet de vérifier si une chaîne de caractères en contient une autre. Il renvoie toujours un booléen : true
lorsque la sous-chaîne est trouvée, false
dans le cas contraire. Cet opérateur est très utile pour écrire des conditions basées sur des mots-clés, des fragments de titres ou de descriptions, et simplifie les tests textuels directement dans le langage des thèmes Blogger.
Les origines de l’opérateur de contenu
L’opérateur de contenu s’inscrit dans une longue tradition de recherche et de manipulation de chaînes de caractères en informatique. Contrairement aux opérateurs d’appartenance, qui tirent leurs racines de la logique des ensembles et du symbole mathématique ∈
, les opérateurs textuels comme contains
sont nés d’un besoin très concret : savoir si une chaîne de caractères donnée inclut un fragment, un mot ou un motif particulier.
Dès les premiers langages de programmation, cette question a trouvé sa place dans les bibliothèques standard. En C, on utilisait la fonction strstr()
pour repérer la première occurrence d’une sous-chaîne dans une autre, et strchr()
pour chercher un caractère précis. En Pascal, la fonction pos()
remplissait le même rôle en renvoyant la position d’une sous-chaîne. Ces mécanismes étaient essentiels, car la manipulation de texte était omniprésente dans les systèmes : interprétation de commandes, analyse de fichiers, recherche dans des flux de données.
À mesure que les langages ont évolué, les concepteurs ont simplifié l’accès à ces opérations. En Java, l’objet String intègre directement la méthode contains()
, qui renvoie un booléen en une seule instruction. En Python, c’est le mot-clé in
qui s’applique indifféremment aux séquences (listes, tuples, ensembles) et aux chaînes. Dans JavaScript, includes()
a été introduit pour remplacer les usages détournés de indexOf()
. Du côté des bases de données, SQL propose depuis longtemps l’opérateur LIKE
ou les fonctions POSITION()
et CHARINDEX()
pour effectuer des tests de sous-chaînes.
Cette convergence montre que l’idée est devenue un standard universel : tout langage ou environnement de programmation offre aujourd’hui un moyen simple de vérifier si une chaîne contient une autre. L’opérateur contains
s’inscrit donc dans cette continuité, en apportant une syntaxe concise directement intégrée à Blogger. Il ne s’agit pas d’une invention propre à Blogger, mais d’une adaptation d’un principe fondamental de l’informatique appliquée, pensé pour rendre les conditions textuelles lisibles et expressives.
En résumé, l’opérateur de contenu est l’héritier direct des premières fonctions de recherche dans les chaînes. Né de la pratique plutôt que de la théorie, il est l’outil par excellence pour exprimer en une instruction ce que des générations de développeurs ont dû coder manuellement : “cette chaîne inclut-elle ce mot ?”.
Les syntaxes d’écriture
L’opérateur de contenu compare toujours deux chaînes de caractères : la première est la chaîne principale, la seconde la sous-chaîne recherchée. L’expression renvoie true
si la sous-chaîne est trouvée, sinon false
.
Noms | Opérateurs | Syntaxes | Opérandes | Résultat |
---|---|---|---|---|
Contient |
contains |
Syntaxe Infixe (par défaut) string contains string Syntaxe Fonctionnelle contains(string,string) |
2 | boolean |
Utilisations et règles
L’opérateur de contenu renvoie toujours une valeur de type booléen. Le résultat est
true
si la sous-chaîne est trouvée dans la chaîne principale, etfalse
dans le cas contraire.-
Les deux opérandes doivent être des chaînes de caractères. La première correspond au texte analysé, la seconde au fragment recherché. Exemple classique :
"Blogger" contains "Blog"
→ retournetrue
, car la chaîne"Blog"
est incluse dans"Blogger"
.
-
Les opérandes peuvent être exprimés de plusieurs manières :
Une valeur explicite,
Une donnée ou une variable,
Ou encore le résultat d’une expression imbriquée.
-
Attention à ne pas le confondre avec l’autre usage du mot-clé
contains
:Ici, il s’agit d’un opérateur de contenu appliqué à des chaînes,
-
Mais dans les opérateurs d’appartenance,
contains
compare un tableau et une valeur.
-
Bonnes pratiques :
Penser aux différences de casse :
contains
est sensible à la casse, donc"Blog"
≠"blog"
. Si nécessaire, transformer les chaînes en majuscules ou minuscules avant la comparaison.Utiliser
contains
pour des recherches simples et directes ; si le test devient trop complexe (plusieurs mots-clés, motifs réguliers), il vaut mieux recourir à un prétraitement du texte ou à des expressions conditionnelles plus explicites.privilégier la lisibilité : un
contains
bien placé clarifie l’intention du code, tandis qu’un enchaînement de tests trop longs peut rendre la condition difficile à comprendre.
Quelques exemples
Deux valeurs explicites
<b:if cond='"Blogger" contains "Blog"'> </b:if>
Ici, on compare directement deux chaînes littérales. Comme "Blog"
est bien inclus au début de la chaîne "Blogger"
, l’opération renvoie true
. Ce cas illustre la forme la plus simple de l’opérateur : tester la présence d’une sous-chaîne dans un mot.
Une valeur explicite et une donnée
<b:if cond='data:blog.title contains "Code"'> </b:if>
Dans cet exemple, on vérifie si le titre du blog contient le mot "Code"
. Si la donnée data:blog.title
vaut "Blogger Code PE"
, l’opération renvoie true
, car la sous-chaîne "Code"
apparaît dans Blogger Code PE
. Cela montre comment contains
peut relier une donnée dynamique à un fragment de texte fixe.
Deux données
<b:if cond='data:blog.pageTitle contains data:blog.title'> </b:if>
Ici, on compare deux données. La condition vérifie si le titre de la page inclut le nom du blog.
Imbrication dans une opération Lambda
<b:eval expr='data:posts count (p => p.title contains "music")'/>
Cette expression combine contains
avec un lambda et l’opérateur count
. Pour chaque post, on teste si son titre contient la chaîne "music"
. Le résultat final est le nombre total de posts correspondant. L’opérateur ne renvoie donc pas seulement un booléen, mais il peut aussi servir de critère à une opération de comptage.
Imbrication dans une opération ternaire
<b:eval expr='data:view.description contains "pizza" ? "Temps de préparation : minimum 2 heures" : "Temps de préparation : moins de 2 heures"'/>
Dans cet exemple, contains
sert de condition pour un ternaire. Si la description contient le mot "pizza"
, l’expression affiche la première chaîne. Sinon, elle affiche l’autre texte. On voit ici comment l’opérateur peut piloter l’affichage de messages différents selon un mot-clé détecté.
Imbrication dans une opération logique
<b:if cond='data:view.title contains "Toto" and data:view.isPost'> </b:if>
Enfin, l’opérateur peut être combiné avec une logique booléenne. Ici, la condition vérifie à la fois que le titre de la page contient "Toto"
et que la page courante est bien un article. Les deux doivent être vrais pour que l’ensemble renvoie true
. Cela permet de construire des tests textuels intégrés à des conditions plus complexes.