# TextBetween Функция скрипта и диаграммы

TextBetween() возвращает текст входной строки, заключенный между символами, указанными в качестве разделителей.

Синтаксис:

TextBetween(text, delimiter1, delimiter2[, n])

Возвращаемые типы данных: строка

Аргументы

| Аргумент | Описание |
| --- | --- |
| text | Оригинальная строка. |
| delimiter1 | Указывает первый символ-разделитель (или строку) для поиска в text. |
| delimiter2 | Указывает второй символ-разделитель (или строку) для поиска в text. |
| n | Указывает, между каким вхождением пары разделителей выполнять поиск. Например, значение 2 возвращает символы между вторым вхождением delimiter1 и вторым вхождением delimiter2. |

Пример: выражения диаграммы

| Пример | Результат |
| --- | --- |
| `TextBetween( '<abc>',  			'<', '>' )` | Возвращает `abc` |
| `TextBetween( '<abc><de>',   '<', '>',2 )` | Возвращает `de` |
| `TextBetween( 'abc', '<', '>' )` | Возвращает `NULL`<br><br>Если в строке отсутствуют разделители, возвращается `NULL`. |
| `TextBetween( '<a<b', '<', '>' )` | Возвращает `NULL`<br><br>Если в строке отсутствуют разделители, возвращается `NULL`. |
| `TextBetween( '<>',  			'<', '>' )` | Возвращает строку нулевой длины. |
| `TextBetween( '<abc>',  			'<', '>', 2 )` | Возвращает `NULL`, так как n превышает число вхождений разделителей. |

## Пример. Основы использования функции TextBetween

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

#### Выражение диаграммы

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, который загружается в таблицу данных под именем `Example`.

* Одно поле в таблице данных называется `InputText`.

Скрипт загрузки

```
Example:
Load * inline [
InputText,
<abc><de>
<def><ghi><jk>
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:

* ` InputText
                                   `

Создайте следующие вычисляемые измерения:

* `=TextBetween(InputText,'<','>')`, чтобы вычислить первый экземпляр символов, которые находятся между разделителями `'<'` и `'>'` в поле `InputText`.

* `=TextBetween(InputText,'<','>',2)`, чтобы вычислить второй экземпляр символов, которые находятся между разделителями `'<'` и `'>'` в поле `InputText`.

Results table

| InputText | TextBetween(InputText,'&lt;','&gt;') | TextBetween(InputText,'&lt;','&gt;',2) |
| --- | --- | --- |
| &lt;abc&gt;&lt;de&gt; | abc | de |
| &lt;def&gt;&lt;ghi&gt;&lt;jkl&gt; | def | ghi |

В первом вычисляемом измерении вывод функции `TextBetween` возвращает первый экземпляр символов, которые находятся между разделителями `'<'` и `'>'`. Например, строка 1 возвращает `abc`. Второе вычисляемое измерение имеет аргумент `n` = `2`, поэтому вывод возвращает второй экземпляр символов, которые находятся между разделителями `'<'` и `'>'`. Например, строка 1 возвращает `de`.

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

#### Скрипт загрузки

Следующий код показывает, как использовать эту функцию в скрипте загрузки.

```
Load *,
textbetween(Text,'<','>') as TextBetween,
textbetween(Text,'<','>',2) as SecondTextBetween;
Load * inline [
Text
<abc><de>
<def><ghi><jkl>];
```

Результирующая таблица

| Текст | ТекстМежду | ВторойТекстМежду |
| --- | --- | --- |
| &lt;abc&gt;&lt;de&gt; | abc | de |
| &lt;def&gt;&lt;ghi&gt;&lt;jkl&gt; | def | ghi |

## Пример. Сценарий использования TextBetween

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

#### Выражение диаграммы

Обзор

Набор данных содержит таблицу данных с адресами электронной почты. В этом примере используется функция `TextBetween` для извлечения домена второго уровня из адреса.

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, который загружается в таблицу данных под именем `Example`.

* Следующие поля в таблице данных:

  * `UserID`

  * `EmailAddress`

Скрипт загрузки

```
Example:
Load * inline [
UserID, EmailAddress
1, alice@example.com
2, bob@sample.org
3, charlie@domain.net
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* ` UserID
                                   `

* `EmailAddress`

Создайте следующее вычисляемое измерение:

* `=TextBetween(EmailAddress,'@', '.')`, чтобы вернуть текст между символами `'@'` и `'.'` в поле `EmailAddress`.

Results table

| UserID | EmailAddress | TextBetween(EmailAddress,'@', '.') |
| --- | --- | --- |
| 1 | alice@example.com | example |
| 2 | bob@sample.org | sample |
| 3 | charlie@domain.net | domain |

Вывод функции `TextBetween` возвращает домен второго уровня для каждого идентификатора пользователя путем поиска содержимого между указанными разделителями: `'@'` и `'.'`.