# FindOneOf – Skript- och diagramfunktion

FindOneOf() söker en sträng för att hitta positionen för eventuella tecken som ingår i en uppsättning angivna tecken. Positionen för den N:e förekomsten av ett tecken från sökuppsättningen returneras, där N är den valfria tredje parametern för funktionen. Om ingen tredje parameter anges returneras den första förekomsten. Om ingen motsvarighet påträffas, returneras 0.

Syntax:

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

Returnerad datatyp: heltal

Argument

| Argument | Beskrivning |
| --- | --- |
| text | Den ursprungliga strängen. |
| char\_set | En teckenuppsättning att söka efter i text. |
| count | Definierar vilka förekomster av något av tecknen som sökningen ska inkludera. Till exempel, söker värdet 2 efter den andra förekomsten. |

Exempel: diagramuttryck

| Exempel | Resultat |
| --- | --- |
| `FindOneOf(  'my example text string', 'et%s' )` | Returnerar `4` eftersom `e` är det fjärde tecknet i exempelsträngen. |
| `FindOneOf(  'my example text string', 'et%s', 3 )` | Returnerar `12` eftersom sökningen avser något av tecknen `e`, `t`, `%` eller `s`, och `t` är den tredje förekomsten i position `12` i exempelsträngen. |
| `FindOneOf(  'my example text string', '¤%&' )` | Returnerar `0` eftersom inget av tecknen `¤`, `%` eller `&` förekommer i exempelsträngen. |

## Exempel – grunderna i FindOneOf

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

#### Diagramuttryck

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som läses in i en datatabell som heter `Example`.

* Ett fält i datatabellen som heter `Phrase`, som innehåller de ursprungliga textsträngarna som ska bearbetas.

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:

* ` Phrase
                                   `

Skapa följande beräknade dimensioner:

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

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

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

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

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

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

Resultattabell

| 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 varje beräknad dimension returnerar utdata positionen för förekomsten av tecknen från sökuppsättningen för varje fras. Den första förekomsten av bokstaven `e` finns t.ex. på position `8`, `7` och `12` för respektive fras. Den andra förekomsten av bokstaven `e` i varje fras finns på position `20`, `12`, och `0` (hittades inte). Den första förekomsten av bokstäverna "`e` eller `y`"finns t.ex. på position `8`, `7` och `4` för respektive fras. Lägg märke till att i frasen `For a very long time` finns den första förekomsten av "`e` eller `y`" på position `8`, ett `e`, och den andra förekomsten på position `10`, ett `y`.

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

#### Laddningsskript

Följande kod visar hur du använder funktionen i ett laddningsskript.

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

Resultattabell

| Indatatext | SökEfter | Förekomst | FindOneOf\_Matchningar |
| --- | --- | --- | --- |
| mitt textsträngsexempel | och%s | 1 | 4 |
| mitt textsträngsexempel | och%s | 3 | 12 |
| mitt textsträngsexempel | ¤%& | 1 | 0 |

## Exempel – FindOneOf-scenariot

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

#### Diagramuttryck

Översikt

I det här exemplet används funktionen `FindOneOf` för att analysera kundkommentarer i ett dataset med kundorder och identifiera order som kan kräva åtgärder. Varje order har ett `CustomerComment`-fält där kunderna kan lämna anteckningar eller kommentarer om sina order. Genom att analysera kommentarerna kan du identifiera specifika nyckelord eller tecken, t.ex. "!", "@", "#", som kan tyda på brådska eller särskilda önskemål.

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som läses in i en datatabell som heter `Example`.

* Följande fält i datatabellen:

  * `TicketID` ärendets id-nummer

  * `CustomerComment` den ursprungliga textsträngen

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* ` TicketID
                                   `

* `CustomerComment`

Skapa följande beräknade dimensioner:

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

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

Resultattabell

| TicketID | Kundkommentar | FindOneOf(CustomerComment, '!,@,#') | If(FindOneOf(CustomerComment, '!,@,#')&gt;0,'Hög prioritet','Normal prioritet') |
| --- | --- | --- | --- |
| 1 | Jag behöver denna order så snart som möljigt! | 23 | Hög prioritet |
| 2 | Bekräfta min order @12345. | 25 | Hög prioritet |
| 3 | Kan ni uppdatera min order? | 0 | Normal prioritet |
| 4 | Jag har en fråga om #discount. | 25 | Hög prioritet |
| 5 | Tack! | 10 | Hög prioritet |

Jämför utdata från funktionen `FindOneOf` med de ursprungliga `CustomerComment`-strängvärdena som laddades i skriptet. Med hjälp av värdena `!,@,#`, kunde funktionen returnera den position där dessa tecken förekommer i kommentarssträngen. Den slutliga åtgärden använder en villkorlig `If`-sats för att identifiera poster som innehåller något av söktecknen och markera dem som `High Priority`. Om inget av söktecknen `!,@,#` hittas, t.ex. rad 3, klassificeras ärendet som `Normal Priority`.