# FindOneOf - Fonction de script et de graphique

FindOneOf() recherche dans une chaîne la position de l'occurrence de n'importe quel caractère faisant partie d'un jeu de caractères fourni. La position de la Nième occurrence d'un caractère du jeu de recherche est renvoyée, N étant le troisième paramètre facultatif de la fonction. Si aucun troisième paramètre n'est fourni, la première occurrence est renvoyée. En l'absence de correspondance, la valeur 0 est renvoyée.

FindOneOf(text, char\_set[, count])

entier

Arguments

| Argument | Description |
| --- | --- |
| text | Chaîne d'origine. |
| char\_set | Jeu de caractères à rechercher dans text. |
| count | Définit l'occurrence de n'importe lequel des caractères à rechercher. Par exemple, une valeur de 2 recherche la deuxième occurrence. |

Exemple : expressions de graphique

| Exemple | Résultat |
| --- | --- |
| `FindOneOf(  'my example text string', 'et%s' )` | Renvoie `4`, car `e` est le quatrième caractère de l'exemple de chaîne. |
| `FindOneOf(  'my example text string', 'et%s', 3 )` | Renvoie `12`, car la recherche porte sur n'importe lequel des caractères `e`, `t`, `%` et `s`, et `t` est la troisième occurrence à la position `12` de l'exemple de chaîne. |
| `FindOneOf(  'my example text string', '¤%&' )` | Renvoie `0`, car aucun des caractères `¤`, `%` ni `&` n'est trouvé dans l'exemple de chaîne. |

## Exemple - Les bases de FindOneOf

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/FindOneOf.htm)

#### Expression de graphique

Vue d'ensemble

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Jeu de données chargé dans une table de données appelée `Example`.

* Champ de la table de données portant le nom `Phrase`, contenant les chaînes de texte d'origine à traiter.

Script de chargement

```
Example:
Load *
Inline
[Phrase
Many tiny beads
For a very long time
Has the potential for growth
];
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ce champ comme dimension :

* ` Phrase
                                   `

Créez les dimensions calculées suivantes :

* `=FindOneOf(Phrase, 'e', 1)`

* `=FindOneOf(Phrase, 'y', 1)`

* `=FindOneOf(Phrase, 'ey', 1)`

* `=FindOneOf(Phrase, 'e', 2)`

* `=FindOneOf(Phrase, 'y', 2)`

* `=FindOneOf(Phrase, 'ey', 2)`

Tableau de résultats

| Phrase | FindOneOf(Phrase, 'e', 1) | FindOneOf(Phrase, 'y', 1) | FindOneOf(Phrase, 'ey', 1) | FindOneOf(Phrase, 'e', 2) | FindOneOf(Phrase, 'y', 2) | FindOneOf(Phrase, 'ey', 2) |
| --- | --- | --- | --- | --- | --- | --- |
| For a very long time | 8 | 10 | 8 | 20 | 0 | 10 |
| Has the potential for growth | 7 | 0 | 7 | 12 | 0 | 12 |
| Many tiny beads | 12 | 4 | 4 | 0 | 9 | 9 |

Pour chaque dimension calculée, la sortie renvoie la position de l'occurrence des caractères du jeu de recherche pour chaque phrase. Par exemple, la première occurrence de la lettre `e` est trouvée aux positions `8`, `7` et `12` pour chaque phrase, respectivement. La deuxième occurrence de la lettre `e` dans chaque phrase est trouvée aux positions `20`, `12` et `0` (non trouvée). De même, la première occurrence de la lettre `e` ou `y` est trouvée aux positions `8`, `7` et `4` pour chaque phrase, respectivement. Notez que dans la phrase `For a very long time`, la première occurrence de `e` ou `y` se trouve à la position `8`, un `e`, et la deuxième occurrence à la position `10`, un `y`.

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/FindOneOf.htm)

#### Script de chargement

Le code suivant montre comment utiliser la fonction dans un script de chargement.

```
Example:
Load *, FindOneOf(InputText, SearchFor, Occurrence) AS FindOneOf_Matches
Inline
InputText, SearchFor, Occurrence
my example text string, et%s,1
my example text string, et%s,3
my example text string, ¤%&,1
];
```

Tableau de résultats

| InputText | SearchFor | Occurrence | FindOneOf\_Matches |
| --- | --- | --- | --- |
| my example text string | et%s | 1 | 4 |
| my example text string | et%s | 3 | 12 |
| my example text string | ¤%& | 1 | 0 |

## Exemple - Scénario FindOneOf

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/FindOneOf.htm)

#### Expression de graphique

Vue d'ensemble

Cet exemple utilise la fonction `FindOneOf` pour analyser les commentaires des clients d'un jeu de données de commandes de clients et identifier les commandes qui peuvent nécessiter une action. Chaque commande dispose d'un champ `CustomerComment` dans lequel les clients peuvent laisser des remarques ou des commentaires sur leurs commandes. En analysant les commentaires, vous pouvez identifier des mots-clés ou des caractères spécifiques tels que !, @, #, qui pourraient indiquer une urgence ou des demandes spéciales.

Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à une nouvelle section.

Le script de chargement contient :

* Jeu de données chargé dans une table de données appelée `Example`.

* Champs suivants dans la table de données :

  * `TicketID` numéro d'identification du ticket

  * `CustomerComment` chaîne de texte d'origine

Script de chargement

```
Example:
Load * inline [
TicketID, CustomerComment
1, I need this order ASAP!
2, Please confirm my order @12345.
3, Can you update my order?
4, I have a question about #discount.
5, Thank you!
];
```

Résultats

Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :

* ` TicketID
                                   `

* `CustomerComment`

Créez les dimensions calculées suivantes :

* `=FindOneOf(CustomerComment, '!,@,#')`

* `=If(FindOneOf(CustomerComment, '!,@,#')>0,'High Priority','Normal Priority')`

Tableau de résultats

| TicketID | CustomerComment | FindOneOf(CustomerComment, '!,@,#') | If(FindOneOf(CustomerComment, '!,@,#')&gt;0,'High Priority','Normal Priority') |
| --- | --- | --- | --- |
| 1 | I need this order ASAP! | 23 | High Priority |
| 2 | Please confirm my order @12345. | 25 | High Priority |
| 3 | Can you update my order? | 0 | Normal Priority |
| 4 | I have a question about #discount. | 25 | High Priority |
| 5 | Thank you! | 10 | High Priority |

Comparez la sortie de la fonction `FindOneOf` aux valeurs de la chaîne `CustomerComment` d'origine qui ont été chargées dans le script. Grâce à l'utilisation des valeurs `!,@,#`, la fonction a réussi à renvoyer la position de ces caractères dans la chaîne de commentaires. La mesure finale utilise une instruction `If` conditionnelle pour identifier les enregistrements qui contiennent l'un des caractères de recherche et leur attribuer une valeur `High Priority`. Si aucun des caractères de recherche `!,@,#` n'est trouvé, par exemple à la ligne 3, le ticket est classé comme ayant la valeur `Normal Priority`.