# SubStringCount Script- en diagramfunctie

SubstringCount() retourneert het aantal keren dat de opgegeven subtekenreeks voorkomt in de tekst van de invoertekenreeks. Als er geen overeenkomst wordt gevonden, wordt 0 geretourneerd.

Syntaxis:

SubStringCount(text, sub\_string)

Retourgegevenstypen: geheel getal

Argumenten

| Argument | Beschrijving |
| --- | --- |
| text | De oorspronkelijke tekenreeks. |
| sub\_string | Een tekenreeks die een of meer keren in de invoerreeks text mag voorkomen. |

Voorbeeld: diagramuitdrukkingen

| Voorbeeld | Resultaat |
| --- | --- |
| `SubStringCount( 'abcdefgcdxyz', 'cd' )` | Retourneert `2` |
| `SubStringCount( 'abcdefgcdxyz', 'dc' )` | Retourneert `0` |

## Voorbeeld - Basisprincipes voor SubStringCount

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/SubStringCount.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`.

* Eén veld in de gegevenstabel met de naam `FruitSentence`.

Load-script

```
Example:
Load * inline [
FruitSentence
"I love eating an apple every day.Apple juice is great too!"
"Apple pie is my favorite dessert. I also enjoy apple jam."
"There is an apple and a banana on the table."
"I don't like apples as much as oranges."
"An apple a day keeps the doctor away, but two apples are even better!"
];
```

Resultaten

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

* ` FruitSentence
                                   `

Maak een nieuwe tabel en voeg de volgende berekende dimensie toe:

* `=SubStringCount(FruitSentence, 'apple')` om uit te rekenen hoe vaak het woord `apple` voorkomt in `FruitSentence`.

Results table

| FruitSentence | SubStringCount(FruitSentence, 'apple') |
| --- | --- |
| An apple a day keeps the doctor away, but two apples are even better! | 2 |
| Apple pie is my favorite dessert. I also enjoy apple jam. | 1 |
| I don't like apples as much as oranges. | 1 |
| I love eating an apple every day. Apple juice is great too! | 1 |
| There is an apple and a banana on the table. | 1 |

De tabel wordt gesorteerd op de dimensie `FruitSentence` in oplopende volgorde. De functie `SubStringCount` retourneert het aantal keren dat het woord `apple` in elke zin voorkomt. De eerste zin retourneert bijvoorbeeld `2`, omdat het woord twee keer voorkomt in de zin. In de tweede en vierde zin negeert de functie het woord `Apple` omdat het niet overeenkomt met de hoofdletter van de zoekterm `apple`.

TipOm hoofdletterongevoelig te zoeken, kunt u uw invoerreeks eerst omzetten naar hoofdletters of kleine letters en vervolgens de functie `SubStringCount` gebruiken voor het resultaat. Om bijvoorbeeld naar alle exemplaren van het woord apple te zoeken, ongeacht de hoofdletters, gebruikt u de volgende metinguitdrukking: `=SubStringCount(Upper(FruitSentence),'APPLE')`. De uitdrukking gebruikt de functie `SubStringCount` met de functie `Upper` om de hele tekenreeks naar hoofdletters te converteren, en zoekt vervolgens naar het woord `APPLE`.

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

#### Load-script

De volgende code laat zien hoe u de functie in een load-script kunt gebruiken. Dit voorbeeld bevat een voorafgaande lading die de functie `SubStringCount` met de functie `Upper` gebruikt om de hele tekenreeks naar hoofdletters te converteren, en vervolgens naar het woord `APPLE` zoekt.

```
Example:
Load *,
SubStringCount(Upper(FruitSentence),'APPLE') as SubStringCount_APPLE;
Load * inline [
FruitSentence
"I love eating an apple every day. Apple juice is great too!"
"Apple pie is my favorite dessert. I also enjoy apple jam."
"There is an apple and a banana on the table."
"I don't like apples as much as oranges."
"An apple a day keeps the doctor away, but two apples are even better!"
];
```

Resultatentabel

| FruitSentence | SubStringCount\_APPLE |
| --- | --- |
| I love eating an apple every day. Apple juice is great too! | 2 |
| Apple pie is my favorite dessert. I also enjoy apple jam. | 2 |
| There is an apple and a banana on the table. | 1 |
| I don't like apples as much as oranges. | 1 |
| An apple a day keeps the doctor away, but two apples are even better! | 2 |

## Voorbeeld 5 – Scenario met SubStringCount

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

#### Diagramuitdrukking

Overzicht

Een gegevensverzameling van fruitproducten bevat een veld met productbeschrijvingen. Dit voorbeeld berekent het aantal keren dat de volgende fruitnamen in elke beschrijving voorkomen: apple, banana of orange.

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

* Eén veld in de gegevenstabel met de naam `ProductDescription`.

Load-script

```
Example:
Load * inline [
ProductDescription
"Fresh apple and banana smoothie."
"Organic apple, banana, and orange juice. Great for breakfast."
"A refreshing orange soda made with real orange juice."
"Banana chips with apple and cinnamon flavor."
"Delicious apple pie with a hint of cinnamon and vanilla."
"Tropical banana and orange mix for smoothies."
];
```

Resultaten

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

* `ProductDescription`

Maak de volgende berekende dimensies:

* `=SubStringCount(ProductDescription, 'apple')`, om het aantal exemplaren van het woord `apple` in de tekenreeks `ProductDescription` te berekenen.

* `=SubStringCount(ProductDescription, 'banana')`, om het aantal exemplaren van het woord `banana` in de tekenreeks `ProductDescription` te berekenen.

* `=SubStringCount(ProductDescription, 'orange')`, om het aantal exemplaren van het woord `orange` in de tekenreeks `ProductDescription` te berekenen.

Results table

| ProductDescription | SubStringCount(ProductDescription, 'apple') | SubStringCount(ProductDescription, 'banana') | SubStringCount(ProductDescription, 'orange') |
| --- | --- | --- | --- |
| A refreshing orange soda made with real orange juice. | 0 | 0 | 2 |
| Banana chips with apple and cinnamon flavor. | 1 | 0 | 0 |
| Delicious apple pie with a hint of cinnamon and vanilla. | 1 | 0 | 0 |
| Fresh apple and banana smoothie. | 1 | 1 | 0 |
| Organic apple, banana, and orange juice. Great for breakfast. | 1 | 1 | 1 |
| Tropical banana and orange mix for smoothies. | 0 | 1 | 1 |

De uitvoer van de functie `SubStringCount` geeft met succes het aantal keren dat elke subtekenreeks (`apple, banana, orange`) voorkomt in de productomschrijving. In de eerste beschrijving retourneert de functie bijvoorbeeld 2 terug omdat er twee exemplaren van het woord `orange` zijn. Het argument `sub_string` is hoofdlettergevoelig, dus in de tweede beschrijving telt de functie het woord `Banana` niet omdat het niet overeenkomt met de subtekenreeks `banana` in de metinguitdrukking.

TipOm hoofdletterongevoelig te zoeken, kunt u uw invoerreeks eerst omzetten naar hoofdletters of kleine letters en vervolgens de functie `SubStringCount` gebruiken voor het resultaat. Om bijvoorbeeld naar alle exemplaren van het woord apple te zoeken, ongeacht de hoofdletters, gebruikt u de volgende metinguitdrukking: `=SubStringCount(Upper(ProductDescription),'APPLE')`. De uitdrukking gebruikt de functie `SubStringCount` met de functie `Upper` om de hele tekenreeks naar hoofdletters te converteren, en zoekt vervolgens naar het woord `APPLE`.

## Voorbeeld 5 – Scenario met SubStringCount voor het parseren van geneste gegevens

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

#### Diagramuitdrukking

Overzicht

Een gegevensverzameling van IT-records bevat een lijst met id-nummers en categorieën van wijzigingen. In de gegevenstabel wordt het veld Categories afgeleid van een hiërarchie op meerdere niveaus die de hoogste bovenliggende categorie vermeldt, gevolgd door alle subcategorieën, bijvoorbeeld Software &gt; Program &gt; Patch. Dit scenario laat zien hoe u de laatste waarde, of bladwaarde, uit deze onregelmatige categoriehiërarchie kunt halen met behulp van een combinatie van de functies SubStringCount en SubField.

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:

  * ChangeID bevat de oorspronkelijke wijzigings-ID die verwerkt moet worden.

  * Categories bevat een lijst met wijzigingscategorieën. De categorieën worden gescheiden door puntkomma's en in hiërarchische volgorde van links naar rechts vermeld, beginnend bij de bovenste bovenliggende categorie tot de meest gedetailleerde subcategorie.

Load-script

```
Example:
Load * inline [
ChangeID,Categories
CHG00100,Software;Program;Patch
CHG00101,Hardware;Server
CHG00102,Hardware;Network;Router
];
```

Resultaten

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

* ChangeID

* Categories

Maak de volgende berekende dimensies:

* =SubStringCount(Categories,';')+1, om het aantal categorieniveaus in de wijzigingshiërarchie te berekenen.

* =SubField(Categories, ';' ,SubStringCount(Categories,';')+1), om de meest rechtse categorie uit de wijzigingshiërarchie te extraheren.

Results table

| ChangeID | Categories | ​SubStringCount(Categories,';')+1 | SubField(Categories, ';' ,SubStringCount(Categories,';')+1) |
| --- | --- | --- | --- |
| CHG00100 | Software;Program;Patch | 3 | Patch |
| CHG00101 | Hardware;Server | 2 | Server |
| CHG00102 | Hardware;Network;Router | 3 | Router |

In dit voorbeeld is de SubStringCount functie in de SubField functie genest. De eerste berekende dimensie, SubStringCount(), berekent het aantal geneste waarden in het veld Categories. Dit wordt bepaald door het aantal puntkomma's ';' te tellen en 1 bij het resultaat op te tellen. Deze uitvoer wordt dan geïnjecteerd als de derde parameter van de functie SubField om de meest rechtse categorie te extraheren die genest is in het veld Categories.

Bekijk bijvoorbeeld de resultaten voor de vermelding ChangeID CHG00100 . In de eerste berekende dimensie is SubStringCount 2. De uitdrukking voegt vervolgens 1 toe aan dat resultaat om te bepalen dat het veld Categories drie geneste categoriewaarden heeft, Software, Program, en Patch. De functie SubField gebruikt dit resultaat vervolgens in de tweede berekende dimensie om de derde categorie, Patch, te extraheren.