# FindOneOf Funzione per script e grafici

FindOneOf() ricerca una stringa per individuare la posizione dell'occorrenza di un qualsiasi carattere che fa parte di un set di caratteri forniti. Viene restituita la posizione della n-esima occorrenza di qualsiasi carattere del set di ricerca, dove N è il terzo parametro opzionale della funzione. Se non viene fornito un terzo parametro, viene restituita la prima occorrenza. Se non viene trovata una corrispondenza, viene restituito il valore 0.

Sintassi:

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

Tipo di dati restituiti: numero intero

Argomenti

| Argomento | Descrizione |
| --- | --- |
| text | La stringa originale. |
| char\_set | Un set di caratteri da ricercare in text. |
| count | Definisce l'occorrenza di qualsiasi carattere da ricercare. Ad esempio, un valore di 2 ricerche per la seconda occorrenza. |

Esempio: espressioni del grafico

| Esempio | Risultato |
| --- | --- |
| `FindOneOf(  'my example text string', 'et%s' )` | Restituisce `4` perché `e` corrisponde al quarto carattere nella stringa di esempio. |
| `FindOneOf(  'my example text string', 'et%s', 3 )` | Restituisce `12` perché la ricerca viene eseguita per uno qualsiasi dei caratteri `e`, `t`, `%` o `s`, e `t` corrisponde alla terza occorrenza nella posizione `12` della stringa di esempio. |
| `FindOneOf(  'my example text string', '¤%&' )` | Restituisce `0` perché nessuno dei caratteri `¤`, `%` o `&` esiste nella stringa di esempio. |

## Esempio: principi fondamentali della funzione FindOneOf

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

#### Espressione del grafico

Panoramica

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati che viene caricato in una tabella dati chiamata `Example`.

* Un campo nella tabella dati chiamato `Phrase`, che contiene le stringhe di testo originali da elaborare.

Script di caricamento

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

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere questo campo come dimensione:

* ` Phrase
                                   `

Creare le seguenti dimensioni calcolate:

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

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

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

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

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

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

Tabella dei risultati

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

Per ogni dimensione calcolata, l'output restituisce la posizione dell'occorrenza dei caratteri del set di ricerca per ogni frase. Ad esempio, la prima occorrenza della lettera `e` si trova nelle posizioni `8`, `7` e `12` per ogni frase, rispettivamente. La seconda occorrenza della lettera `e` in ogni frase si trova nelle posizioni `20`, `12` e `0` (non trovata). In modo simile, la prima occorrenza delle lettere "`e` o `y`" si trova nelle posizioni `8`, `7` e `4`, per ogni frase, rispettivamente. Notare che nella frase `For a very long time`, la prima occorrenza di "`e` o `y`" si trova nella posizione `8`, una `e`, mentre la seconda occorrenza è nella posizione `10`, una `y`.

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

#### Script di caricamento

Il codice seguente mostra come utilizzare la funzione in uno script di caricamento.

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

Tabella dei risultati

| Testo di input | Cerca | Occorrenza | Corrispondenze di FindOneOf |
| --- | --- | --- | --- |
| esempio di stringa di testo | et%s | 1 | 4 |
| esempio di stringa di testo | et%s | 3 | 12 |
| esempio di stringa di testo | ¤%& | 1 | 0 |

## Esempio: scenario per l'applicazione della funzione FindOneOf

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

#### Espressione del grafico

Panoramica

In questo esempio si mostra come utilizzare la funzione `FindOneOf` per analizzare i commenti dei clienti in un set di dati di ordini dei clienti e identificare gli ordini che possono richiedere un'azione. Ogni ordine dispone di un campo `CustomerComment`, dove i clienti possono lasciare note o commenti sui propri ordini. Analizzando i commenti, è possibile identificare parole chiave o caratteri specifici, come "!", "@", "#", che potrebbero indicare urgenza o richieste speciali.

Aprire l'Editor caricamento dati e aggiungere lo script di caricamento sotto in una nuova sezione.

Lo script di caricamento contiene:

* Un set di dati che viene caricato in una tabella dati chiamata `Example`.

* I seguenti campi nella tabella dati:

  * `TicketID` il numero di identità del ticket

  * La stringa di testo originale di `CustomerComment`

Script di caricamento

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

Risultati

Caricare i dati e aprire un foglio. Creare una nuova tabella e aggiungere tali campi come dimensioni:

* ` TicketID
                                   `

* `CustomerComment`

Creare le seguenti dimensioni calcolate:

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

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

Tabella dei risultati

| TicketID | CommentoCliente | FindOneOf(CustomerComment, '!,@,#') | If(FindOneOf(CustomerComment, '!,@,#')&gt;0,'Alta priorità','Priorità normale') |
| --- | --- | --- | --- |
| 1 | Ho bisogno di questo ordine il prima possibile! | 23 | Priorità alta |
| 2 | La prego di confermare il mio ordine @12345. | 25 | Priorità alta |
| 3 | Può aggiornare il mio ordine? | 0 | Priorità normale |
| 4 | Ho una domanda sullo #sconto. | 25 | Priorità alta |
| 5 | Grazie! | 10 | Priorità alta |

Confrontare l'output della funzione `FindOneOf` con i valori delle stringhe originali di `CustomerComment` caricate nello script. Utilizzando i valori `!,@,#`, la funzione ha restituito con successo la posizione in cui si trovano questi caratteri nella stringa di commento. La misura finale utilizza un'istruzione condizionale `If` per identificare i record che includono uno qualsiasi dei caratteri di ricerca e assegnarli come `High Priority`. Se non viene trovato nessuno dei caratteri di ricerca `!,@,#`, ad esempio nella riga 3, il ticket viene classificato come `Normal Priority`.