# FindOneOf - Skript- und Diagrammfunktion

FindOneOf() durchsucht einen String, um die Position des Vorkommens eines beliebigen Zeichens aus einem Satz von bereitgestellten Zeichen zu finden. Die Position des N-ten Vorkommens eines beliebigen Zeichens aus der Suchmenge wird zurückgegeben, wobei N der optionale dritte Parameter der Funktion ist. Wenn kein dritter Parameter angegeben wird, wird das erste Vorkommen zurückgegeben. Wenn keine Übereinstimmung gefunden wird, wird 0 zurückgegeben.

Syntax:

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

Rückgabe Datentyp: ganze Zahl

Argumente

| Argument | Beschreibung |
| --- | --- |
| text | Der Original-String. |
| char\_set | Mehrere Zeichen, nach denen in text gesucht werden soll. |
| count | Definiert, nach welchem Vorkommen eines der Zeichen gesucht werden soll. Beim Wert 2 wird beispielsweise nach dem zweiten Vorkommen gesucht. |

Beispiel: Diagrammformeln

| Beispiel | Ergebnis |
| --- | --- |
| `FindOneOf(  'my example text string', 'et%s' )` | `4` wird zurückgegeben, da `e` das vierte Zeichen im Beispielstring ist. |
| `FindOneOf(  'my example text string', 'et%s', 3 )` | `12` wird zurückgegeben, da die Suche nach einem beliebigen der Zeichen `e`, `t`, `%` oder `s` erfolgt und `t` das dritte Vorkommen ist, das sich an der Position `12` des Beispielstrings befindet. |
| `FindOneOf(  'my example text string', '¤%&' )` | Gibt `0` zurück, da keines der Zeichen `¤`, `%` oder `&`im Beispielstring vorkommt. |

## Beispiel – Grundlegendes zu „FindOneOf“

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

#### Diagrammformel

Übersicht

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in einen neuen Abschnitt ein.

Das Ladeskript umfasst:

* Datensatz, der in eine Datentabelle namens `Example` geladen wird

* Ein Feld in der Datentabelle mit der Bezeichnung `Phrase`, das die zu verarbeitenden Originaltextstrings enthält.

Ladeskript

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

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie dieses Feld als Dimension hinzu:

* ` Phrase
                                   `

Erstellen Sie die folgenden dynamischen Dimensionen:

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

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

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

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

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

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

Ergebnistabelle

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

Für jede dynamische Dimension gibt die Ausgabe die Position des Vorkommens der Zeichen aus der Suchmenge für jede Phrase zurück. Das erste Vorkommen des Buchstabens `e` findet sich zum Beispiel an den Positionen `8`, `7` bzw. `12` der einzelnen Phrasen. Das zweite Vorkommen des Buchstabens `e` in den einzelnen Phrasen befindet sich an den Positionen `20`, `12` und `0` (nicht gefunden). Entsprechend befindet sich das erste Vorkommen der Buchstaben „`e` oder `y`“ an der Position `8`, `7` bzw. `4` der einzelnen Phrasen. Beachten Sie, dass in der Phrase `For a very long time` das erste Vorkommen von „`e` oder `y`“ an der Position `8`, einem `e`, und das zweite Vorkommen an der Position `10`, einem `y`, zu finden ist.

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

#### Ladeskript

Der folgende Code zeigt, wie Sie die Funktion in einem Ladeskript verwenden können.

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

Ergebnistabelle

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

## Beispiel – Szenario für „FindOneOf“

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

#### Diagrammformel

Übersicht

In diesem Beispiel wird die Funktion `FindOneOf` verwendet, um Kundenkommentare in einem Datensatz von Kundenbestellungen zu analysieren und Bestellungen zu identifizieren, die möglicherweise Maßnahmen erfordern. Jede Bestellung hat ein Feld `CustomerComment`, in dem Kunden Notizen oder Kommentare zu ihrer Bestellung hinterlassen können. Durch die Analyse der Kommentare können Sie bestimmte Schlüsselwörter oder Zeichen, wie z.B. „!“, „@“, „#“, identifizieren, die auf Dringlichkeit oder besondere Wünsche hinweisen könnten.

Öffnen Sie den Dateneditor und fügen Sie das Ladeskript unten in einen neuen Abschnitt ein.

Das Ladeskript umfasst:

* Datensatz, der in eine Datentabelle namens `Example` geladen wird

* Die folgenden Felder in der Datentabelle:

  * `TicketID`: die ID des Tickets

  * `CustomerComment`: der Original-Textstring

Ladeskript

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

Ergebnisse

Laden Sie die Daten und öffnen Sie ein Arbeitsblatt. Erstellen Sie eine neue Tabelle und fügen Sie die folgenden Felder als Dimensionen hinzu:

* ` TicketID
                                   `

* `CustomerComment`

Erstellen Sie die folgenden dynamischen Dimensionen:

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

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

Ergebnistabelle

| TicketID | CustomerComment | FindOneOf(CustomerComment, '!,@,#') | If(FindOneOf(CustomerComment, '!,@,#')&gt;0,'High Priority','Normal Priority') |
| --- | --- | --- | --- |
| 1 | Ich brauche diese Bestellung so schnell wie möglich! | 23 | Hohe Priorität |
| 2 | Bitte bestätigen Sie meine Bestellung @12345. | 25 | Hohe Priorität |
| 3 | Können Sie meine Bestellung aktualisieren? | 0 | Normale Priorität |
| 4 | Ich habe eine Frage zu #discount. | 25 | Hohe Priorität |
| 5 | Vielen Dank! | 10 | Hohe Priorität |

Vergleichen Sie die Ausgabe der Funktion `FindOneOf` mit den ursprünglichen Stringwerten für `CustomerComment`, die in das Skript geladen wurden. Anhand der Werte `!,@,#` hat die Funktion erfolgreich die Position zurückgegeben, an der diese Zeichen im Kommentarstring vorkommen. Die letzte Kennzahl verwendet eine bedingte `If`-Anweisung, um Datensätze zu identifizieren, die eines der Suchzeichen enthalten, und diese als `High Priority` zuzuordnen. Wenn keines der Suchzeichen `!,@,#` gefunden wird, z. B. Zeile 3, dann wird das Ticket als `Normal Priority` eingestuft.