# 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/sense/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`。第二个计算维度具有 `2` 的 `n` 参数，因此输出返回分隔符 `'<'` 和 `'>'` 之间出现的字符的第二个实例。例如，第 1 行返回 `de`。

[](https://help.qlik.com/en-US/sense/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>];
```

结果表

| Text | TextBetween | SecondTextBetween |
| --- | --- | --- |
| &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/sense/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` 函数的输出通过搜索以下指定分隔符之间的内容来返回每个用户 ID 的二级域：`'@'` 和 `'.'`。