# FindOneOf - Script- en diagramfunctie

FindOneOf() doorzoekt een tekenreeks om de positie te vinden van enig teken uit de reeks van opgegeven tekens. De positie van het N-de exemplaar van een teken uit de zoekset wordt geretourneerd, waarbij N de optionele derde parameter van de functie is. Als er geen derde parameter wordt opgegeven, wordt het eerste exemplaar geretourneerd. Als geen waarde wordt gevonden, wordt 0 geretourneerd.

Syntaxis:

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

Retourgegevenstypen: geheel getal

Argumenten

| Argument | Beschrijving |
| --- | --- |
| text | De oorspronkelijke tekenreeks. |
| char\_set | Een reeks tekens om naar te zoeken in text. |
| count | Definieert naar welk exemplaar van de tekens moet worden gezocht. Bijvoorbeeld, bij een waarde van 2 wordt naar het tweede exemplaar gezocht. |

Voorbeeld: diagramuitdrukkingen

| Voorbeeld | Resultaat |
| --- | --- |
| `FindOneOf(  'my example text string', 'et%s' )` | Retourneert `4` omdat `e` het vierde teken is in de voorbeeldtekenreeks. |
| `FindOneOf(  'my example text string', 'et%s', 3 )` | Retourneert `12` omdat wordt gezocht naar een van de tekens `e`, `t`, `%` of `s` en `t` het derde exemplaar is op positie `12` van de voorbeeldtekenreeks. |
| `FindOneOf(  'my example text string', '¤%&' )` | Retourneert `0` omdat geen van de tekens `¤`, `%` of `&` voorkomt in de voorbeeldtekenreeks. |

## Voorbeeld - Basisprincipes voor FindOneOf

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

#### Diagramuitdrukking

Overzicht

Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuwe sectie.

Het load-script bevat:

* Een gegevensverzameling die wordt geladen in een tabel met de naam `Example`.

* Een veld in de gegevenstabel genaamd `Phrase`, dat de originele teksttekenreeks bevat die verwerkt moeten worden.

Load-script

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

Resultaten

Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie:

* ` Phrase
                                   `

Maak de volgende berekende dimensies:

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

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

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

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

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

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

Resultatentabel

| 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 |

Voor elke berekende dimensie geeft de uitvoer de positie van de tekens uit de zoekset voor elke zin. Bijvoorbeeld, de letter `e` komt voor het eerst voor op positie `8`, `7`, en `12` voor respectievelijk elke zin. De tweede keer dat de letter `e` in elke zin voorkomt, is op positie `20`, `12` en `0` (niet gevonden). Zo komt de letter '`e` of `y`' voor het eerst voor op positie `8`, `7` en `4`, voor respectievelijk elke zin. Merk op dat in de zin `For a very long time`, de eerste vermelding van '`e` of `y`' wordt gevonden op positie `8`, een `e`, en de tweede vermelding op positie `10`, een `y`.

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

#### Load-script

De volgende code laat zien hoe u de functie in een load-script kunt gebruiken.

```
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
];
```

Resultatentabel

| InputText | SearchFor | Exemplaar | FindOneOf\_Matches |
| --- | --- | --- | --- |
| mijn voorbeeldtekstreeks | et%s | 1 | 4 |
| mijn voorbeeldtekstreeks | et%s | 3 | 12 |
| mijn voorbeeldtekstreeks | ¤%& | 1 | 0 |

## Voorbeeld - FindOneOf scenario

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

#### Diagramuitdrukking

Overzicht

In dit voorbeeld wordt de functie `FindOneOf` gebruikt om opmerkingen van klanten in een gegevensverzameling van klantenorders te analyseren en orders te identificeren waarvoor mogelijk actie moet worden ondernomen. Elke bestelling heeft een veld `CustomerComment` waar klanten notities of opmerkingen over hun bestellingen kunnen achterlaten. Door de opmerkingen te analyseren, kunt u specifieke trefwoorden of tekens identificeren, zoals '!', '@', '#', die op urgentie of speciale verzoeken kunnen duiden.

Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuwe sectie.

Het load-script bevat:

* Een gegevensverzameling die wordt geladen in een tabel met de naam `Example`.

* De volgende velden in de gegevenstabel:

  * `TicketID` het identificatienummer van het ticket

  * `CustomerComment` de oorspronkelijke tekenreeks

Load-script

```
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!
];
```

Resultaten

Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:

* ` TicketID
                                   `

* `CustomerComment`

Maak de volgende berekende dimensies:

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

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

Resultatentabel

| TicketID | Klantopmerking | FindOneOf(Klantopmerking, '!,@,#') | Als(VindEenVan(KlantOpmerking, '!,@,#')&gt;0,'Hoge Prioriteit','Normale Prioriteit') |
| --- | --- | --- | --- |
| 1 | Ik heb deze bestelling ASAP nodig! | 23 | High Priority |
| 2 | Gelieve mijn bestelling @12345 te bevestigen. | 25 | High Priority |
| 3 | Kunt u mijn bestelling bijwerken? | 0 | Normale prioriteit |
| 4 | Ik heb een vraag over #korting. | 25 | High Priority |
| 5 | Hartelijk dank! | 10 | High Priority |

Vergelijk de uitvoer van de functie `FindOneOf` met de oorspronkelijke `CustomerComment` tekenreekswaarden die in het script geladen zijn. Met behulp van de waarden `!,@,#`, gaf de functie met succes de positie terug waar die tekens voorkomen in de tekenreeks met commentaar. De laatste maatregel gebruikt een voorwaardelijke `If` opdracht om records te identificeren die een van de zoektekens bevatten en deze toe te wijzen als `High Priority`. Als geen van de zoektekens `!,@,#` wordt gevonden, bijvoorbeeld rij 3, dan wordt het ticket geclassificeerd als `Normal Priority`.