# 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`。第二個計算維度有 `2` 的 `n` 引數，因此輸出會傳回分隔符號 `'<'` 和 `'>'` 之間出現之字元的第二個執行個體。例如，第 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>];
```

結果表格

| 文字 | 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/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` 函數的輸出搜尋指定分隔符號 `'@'` 和 `'.'`之間的內容，以傳回每個使用者 ID 的第二層級網域。