它解决什么问题
写一个表达式,对某一列的每一行做同样的文本处理,结果输出成新列或覆盖原列。它是逐行算的,行数不变。
最高频的四个用途:去掉首尾空格、去掉千分位逗号和货币符号、截取编码的前几位、把几列拼成一列。
它在流程里的位置
典型位置是在关联和类型转换之前。关联配不上、转数字报错,源头往往是文本里有看不见的空格或符号。
基本信息
| 英文原名 | String Manipulation |
|---|---|
| 中文名称 | 字符串处理(iModel 中文界面) |
| 输入端口 | 1 个数据表 |
| 输出端口 | 1 个,行数不变 |
| 输出类型 | 结果一律是文本。要数字必须再接一个转换节点 |
配置项逐条
-
Expression表达式
在编辑框里写函数。引用列用
$列名$这种写法 – 双击左侧列名列表会自动插入,别手打,列名里有空格或中文时手打容易出错。 -
Function list函数列表
左侧列出所有可用函数,选中会显示用法和示例。常用的几个:
strip()去首尾空格、replace()替换、substr()截取、join()拼接、upperCase()转大写、regexReplace()按正则替换、length()取长度。 -
Append column / Replace column追加新列 / 覆盖原列
建议清洗阶段用追加,保留原值方便对照检查;确认没问题后再改成覆盖,或者用 Column Filter 把原列去掉。直接覆盖出了问题回不去。
String Manipulation 配置对话框
函数列表Function
strip · replace · substr · join · regexReplace · length
选中函数会显示参数说明和示例。
表达式Expression
strip($部门编码$)
列引用用 $列名$,双击左侧列名自动插入。四个最常用的写法见下面一节。
输出方式Append / Replace
追加新列覆盖原列
清洗阶段用追加,留着原值好对照。确认无误后再覆盖。
四个最常用的写法
| 要做的事 | 表达式 |
|---|---|
| 去掉首尾空格 | strip($部门编码$) |
| 去掉千分位逗号和货币符号 | replace(replace($原值$, ",", ""), "¥", "") |
| 取编码前三位 | substr($资产编号$, 0, 3) |
| 把两列拼成一列 | join($年份$, "-", $部门编码$) |
函数可以嵌套。上面第二个例子就是两层 replace 套起来的。要处理的符号多时嵌套会很难读 – 那种情况建议拆成两个 String Manipulation 节点串着走,各做一件事,出问题也好定位。
三个常见坑
- 输出总是文本,忘了再转类型。用 replace 去掉千分位逗号之后,这一列还是文本,直接拿去求和会报错或结果异常。后面必须接 String to Number。这是最常见的一条。
- 缺失值参与运算结果还是空。某一行原本就是空值,任何函数作用在它上面结果仍然是空 – 不会报错,也不会变成空字符串。要先补值就用 Missing Value 节点先处理。
- 正则里的反斜杠要转义。
regexReplace()里写正则时,反斜杠需要写两次。写完先用少量数据验证,别直接全量跑 – 正则写错通常不报错,只是结果不对。
什么时候该换别的节点
| 情况 | 换成 |
|---|---|
| 是数值计算不是文本处理 | Math Formula |
| 要按条件分支输出不同的值 | Rule Engine,规则式比嵌套函数好读 |
| 要同时处理很多列、逻辑复杂 | Column Expressions,一个节点里写多个输出列 |
| 只是把一列按分隔符拆成几列 | Cell Splitter |

