# 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/sense/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)` 列仅返回与 `CharsToKeep` 中的字符完全匹配的 `InputText` 中的字符。例如，第三行返回 `bc`，因为这些是 `InputText` 中与 `CharsToKeep` 中的字符匹配的唯一字符。没有返回大写字符 `A`，因为 `CharsToKeep` 中的项仅为小写。

[](https://help.qlik.com/en-US/sense/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/sense/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-CN/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/PurgeChar.htm)