# KeepChar 指令碼與圖表函數

KeepChar() 會傳回包含第一個字串中任何字元的字串，並符合第二個字串的字元。此函數區分大小寫。

語法：

KeepChar(text, keep\_chars)

傳回的資料類型： 字串

引數

| 引數 | 描述 |
| --- | --- |
| text | 原始字串。 |
| keep\_chars | 包含 text 中要保存之字元的字串。此引數區分大小寫。 |

範例：圖表運算式

| 範例 | 結果 |
| --- | --- |
| `KeepChar ( 'a1b2c3','123' )` | 傳回 `123` |
| `KeepChar  ( 'a1b2c3','1234' )` | 傳回 `123` |
| `KeepChar  ( 'a1b22c3','1234' )` | 傳回 `1223` |
| `KeepChar( 'a1b2c3','312' )` | 傳回 `123` |

## 範例 - KeepChar 基礎事項

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

#### 圖表運算式

概述

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 

  載入到稱為 `Example` 之資料表格的資料集。

* 

  資料表格中的欄位如下：

  * `InputText` 包含要處理的原始文字字串。

  * `CharsToKeep` 包含處理後要從原始文字字串中保留的字元清單。

載入指令碼

```
Example:
Load * inline [
InputText, CharsToKeep
'a1b2c3', '123'
'a^b^c', 'abc'
'A^b^c', 'abc'
];
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `InputText`
* `CharsToKeep`

建立下列計算維度：

* `=KeepChar(InputText, CharsToKeep)`，用來計算 `InputText` 中與 `CharsToKeep` 的字元相符的字元。

結果表格

| InputText | CharsToKeep | KeepChar(InputText, CharsToKeep) |
| --- | --- | --- |
| a1b2c3 | 123 | 123 |
| a^b^c | abc | abc |
| A^b^c | abc | bc |

`KeepChar(InputText, CharsToKeep)` 欄僅傳回 `InputText` 中與 `CharsToKeep` 的字元完全相符的字元。例如，第三列傳回 `bc`，因為這些是 `InputText` 中唯一與 `CharsToKeep` 的字元相符的字元。不會傳回大寫字元 `A`，因為 `CharsToKeep` 中的項目只有小寫。

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

#### 載入指令碼

以下程式碼顯示如何在載入指令碼中使用該函數。

```
Example:
Load
*,
keepchar(String1, String2) as KeepChar;
Load * inline [
String1, String2
'a1b2c3', '123'
];
```

結果表格

| string1 | String2 | KeepChar |
| --- | --- | --- |
| a1b2c3 | 123 | 123 |

## 範例 - KeepChar 用來剖析非結構化文字的使用情境

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

#### 圖表運算式

概述

此範例使用函數剖析非結構化文字 (字母、數字和符號字元) 並提供僅保留數字字元的結構化輸出。

開啟資料載入編輯器並將下面的載入指令碼新增至新的區段。

載入指令碼包含：

* 

  載入到稱為 `Example` 之資料表格的資料集。

* 

  資料表格中的欄位如下：

  * `InputText` 包含要處理的原始文字字串。

  * `CharsToKeep` 包含處理後要從原始文字字串中保留的字元清單。

載入指令碼

```
Example:
Load * inline [
InputText, InputCategory, CharsToKeep
'The numeric code for input processing is 123-456|789.', 'Code', '0123456789'
'Delivery of batch number: 333*456789.', 'Batch', '0123456789'
'Find the goods received in bay 16a', 'Bay', '0123456789'
];
```

結果

載入資料並開啟工作表。建立新的表格並將這些欄位新增為維度：

* `InputText`
* `CharsToKeep`

建立下列計算維度：

* `=KeepChar(InputText, CharsToKeep)`，用來計算 `InputText` 中與 `CharsToKeep` 的字元相符的字元。

結果表格

| InputText | CharsToKeep | KeepChar(InputText, CharsToKeep) |
| --- | --- | --- |
| 配送批號：333\*456789 | 0123456789 | 333456789 |
| 尋找 16a 區收到的貨物 | 0123456789 | 16 |
| 輸入處理的數字代碼是 123-456\|789 | 0123456789 | 123456789 |

比較 `KeepChar` 函數的輸出與指令碼中載入的原始 `InputText` 字串值。`KeepChar` 函數已成功從輸入文字中移除所有非數字字元。

## 瞭解更多資訊

* [PurgeChar 指令碼與圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/PurgeChar.htm)