Comment trouver l’index d’un caractère dans une chaîne (INDEXOF)

Grâce au chaînage d’expressions avancé dans vos formulaires, vous pouvez créer des formules mathématiques pour calculer une valeur. Utilisez INDEXOf pour référencer l’emplacement d’un caractère/valeur dans une chaîne.

La fonction INDEXOF permet d'utiliser deux valeurs de chaîne et de renvoyer l'index de la deuxième valeur dans la première valeur.

  • L'indexation des valeurs commence à 0
  • Si la valeur n'est pas trouvée, la réponse renverra –1

Si « exemple » est la première valeur et que nous recherchons « x » dedans, l’expression renverra 1. e=(0), x=(1), a=(3), etc.

La configuration et la mise en forme de l’expression AVG sont primordiales pour éviter qu’un message d’erreur ne s’affiche dans votre formulaire à l’endroit où s’afficherait habituellement le résultat de l’expression. La première ligne de l’expression INDEXOF doit être configurée comme suit :

{{ INDEXOf(variable, 'value') }}

ASTUCE ! La référence à une variable dans l’expression ci-dessus peut être l’identifiant d’une question ou l’index d’un champ dans une question.

  • Chaque expression est toujours contenue dans une paire d’accolades doubles {{ }}.
  • Il doit y avoir un espace entre la première instance de la fonction INDEX et la dernière parenthèse.
  • Les variables que vous utilisez sont sensibles à la casse
  • Fermez toujours chaque opération INDEX par des parenthèses ( ).

Pour reprendre l'exemple précédent où nous localisons l'index d'une valeur au sein du mot « exemple », notre expression peut être :

{{ INDEXOf(exemple, 'x') }} = 1
{{ INEXDOF(exemple, 'e') }} = 0
{{ INDEXOf(exemple, 's') }} = -1

Plus généralement, l’index d’une valeur peut être extrait de la réponse à une question à réponse texte ou de la réponse à une cellule particulière d’une grille. 

INDEXOF a question à réponse texte{{ INDEXOF(q1,'a') }}Nous indiquera l’index de la valeur « a » dans la question 1.
REMARQUE : Dans cet exemple, q1 a été utilisé comme identifiant de la question 1.
INDEXOF une seule cellule{{ INDEXOF(q2[0], '@') }}En fonction de l'indexation de la grille, cela nous indiquera l'index de la valeur « @ » dans la première cellule de la question 2. 

Imaginons un cas de figure où il faut impérativement connaître le nombre de caractères avant le symbole @ dans un champ de réponse de courrier électronique. La question par laquelle l'adresse email est demandée au demandeur correspond à une question à colonne unique avec l'identifiant  about  (à propos de) et à la cinquième sous-question de la question de type grille.

Identifiantabout
Référence de la question :about.4
Expression :{{ INDEXOF(about.4, '@') }}
Réponse de l'utilisateur :email@email.com
Index renvoyé :5

En extrapolant à partir de l'exemple précédent, un groupe de caractères peut être utilisé dans l'expression. Dans ces cas-là, l'index du premier caractère du groupe de caractères indiqué dans l'expression sera l'index fourni dans la réponse.

Identifiantabout
Référence de la question :about.4
Expression :{{ INDEXOF(about.4, '.com') }}
Réponse de l'utilisateur :email@email.com
Index renvoyé :11

Si des informations d'identification sont collectées à l'aide d'une question à plusieurs colonnes (noms, adresses email, numéros de téléphone, etc.), nous devons modifier la mise en forme de l'expression pour cibler une seule cellule dans la grille. 

Ligne avec une cellule sélectionnée
Identifiantabout
Référence de la question :about[1]
Expression :{{ INDEXOF(about[1], '@') }}
Réponse de l'utilisateur :email@email.com
Index renvoyé :5