# Replace 脚本和图表功能

Replace() 用于使用另一个子字符串替换输入字符串内出现的所有给定子字符串后，返回一个字符串。该函数为非递归函数，从左至右工作。

语法：

Replace(text, from\_str, to\_str)

返回数据类型： 字符串

参数

| 参数 | 描述 |
| --- | --- |
| text | 原始字符串。 |
| from\_str | 在输入字符串 text 内可能出现一次或多次的字符串。 |
| to\_str | 替换在字符串 text 内出现的所有 from\_str 的字符串。 |

示例 - 图表表达式

| 示例 | 结果 |
| --- | --- |
| `Replace( 'abccde','cc','xyz' )` | 返回 `abxyzde` |

## 示例 - Replace 基本原理

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

#### 图表表达式

概述

客户姓名数据集包含一些拼写错误。此示例使用 `Replace` 函数处理任何错误出现的“Jhon”并将其替换为“John”。

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 数据表中有以下字段：

  * `CustomerID`

  * `CustomerName`

加载脚本

```
Example:
Load * inline [
CustomerID, CustomerName
1, Jhon Smith
2, Jhon Doe
3, John Williams
4, Jhonathan Harris
];
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* ` CustomerID
                                       `

* `CustomerName`

创建以下计算维度：

* `=Replace(CustomerName,'Jhon','John')`，用来将 `Jhon` 的所有实例替换为 `John`。

结果表

| CustomerID | CustomerName | Replace(CustomerName,'Jhon','John') |
| --- | --- | --- |
| 1 | Jhon Smith | John Smith |
| 2 | Jhon Doe | John Doe |
| 3 | John Williams | John Williams |
| 4 | Jhonathan Harris | Johnathan Harris |

`Repeat` 函数的输出将查找并更正带 `John` 的 `Jhon` 的所有实例。

## 示例 – Replace 场景

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

#### 图表表达式

概述

产品数据集对类别代码使用不一致的标签。例如，电气产品有多种代码变体，如 `ELEC`、`ELC` 和 `elc`。为使代码标准化，`Replace` 函数用于纠正电气和家具产品的所有不一致类别代码。

打开数据加载编辑器，并将下面的加载脚本添加到新部分。

加载脚本包含：

* 加载到名为 `Example` 的数据表中的数据集。

* 数据表中有以下字段：

  * `ProductID`

  * `CategoryCode`

加载脚本

```
Example:
Load * inline [
ProductID, CategoryCode
1, ELEC
2, ELC
3, FURN
4, FRN
5, ELEC
6, ELC
7, elc
];
```

结果

加载数据并打开工作表。创建新表并将这些字段添加为维度：

* ` ProductID
                                       `

* `CategoryCode`

创建以下计算维度：

* `=Replace(Replace(Upper(CategoryCode), 'ELC', 'ELEC'),'FRN', 'FURN')`，用于将 `ELC` 的任何实例替换为 `ELEC`，并且将 `FRN` 的任何实例替换为 `FURN`。

结果表

| ProductID | CategoryCode | Replace(Replace(Upper(CategoryCode), 'ELC', 'ELEC'),'FRN', 'FURN') |
| --- | --- | --- |
| 1 | ELEC | ELEC |
| 2 | ELC | ELEC |
| 3 | FURN | FURN |
| 4 | FRN | FURN |
| 5 | ELEC | ELEC |
| 6 | ELC | ELEC |
| 7 | elc | ELEC |

`Replace` 函数的输出将 `ELC` 的任何实例替换为 `ELEC`，并将 `FRN` 替换为 `FURN`。请注意，代码 `elc` 也被替换。虽然 `Replace` 函数区分大小写，但维度公式在替换字符串之前使用 `Upper` 函数来符合所有 `CategoryCodes` 的大小写。这有效地使字符串替换不区分大小写。

## 了解详情

* [Replace](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/Replace.htm)