原文发布时间:2011-01-04
作者:糖糖
在Word或Excel等文本或数字编辑软件里,都有‘查询’、‘替换’的功能,该功能可以快速高效地帮助我们查找到文本或表格中的查询对象,需要的时候甚至可以一步替换成想替换的内容。在FME里同样也有这种查找或替换文本串功能的转换器——StringPairReplacer、StringReplacer、StringSearcher。以下简单介绍这三个转换器的功能和之间的差别:
一、最简单快速方便的查找替换转换器——StringPairReplacer。顾名思义, 该转换器以‘查找值 替换值 查找值 替换值…’成对的语法形式完成查询替换功能。如下
例1:该案例中要将源属性值中'b’替换为's’,'o'替换为'a'
源属性值是:
bobby
Replacement Pairs设置:
b s o a
结果为:
sassy
例2:如果查询对象里也包含一个空格,必须用加一个\来区分
源属性值为:
billy bob
成对替换值为:
y\ b a
则结果为:
billaob
二、能用正则表达式查询替换的转换器——StringReplacer
与StringPairReplacer相比,该转换器不是把查找值和替换值一并写在语法里,而是在各自的参数中分别设置,并且在Use Regular Expressions设置为'Yes'的情况下使用高级正则表达式(AREs)。简单地说,AREs是一个或多个被‘|’分隔的分支,与任意能与之匹配的相匹配,以下为表达式中各符号的含义:
| 分隔符
* 0个或多个其之前的匹配的顺序
+ 一个或多个其之前的匹配的顺序
? 0个或一个其之前的匹配
. 匹配任何单个字符
^ 匹配开头的值
$ 匹配结尾的值
[ ] 包含某个字符选择的设置
( )包含某个子表达式——无论匹配的是_{}列表属性里的哪个子表达式
a 能够列入可匹配的任意字符
连接好转换器后,在Attribute参数中选择查找的属性列;Text to Find中设置查找的文本,可以输入要查找的文本对象,也可以在列表中选择属性列;Replacement Text中键入替换值,如果在Use Regular Expressions设置为'Yes',则键入正则表达式;最后Case Sensitive中设置是否区分大小写。
例1:该案例是最简单的子字符串替换类型,不用正则表达式功能的纯文本替换
源字符串: Bobby
被替换文本: obb
替换文本: ill
是否规则表达式: no
是否区分大小写: yes
结果: Billy
例2: 该案例中,0个或多个‘b’字符被空值替换
源字符串: Bobby
被替换文本: b*
替换文本:
是否规则表达式: yes
是否区分大小写: yes
结果: Boy
例3: 该案例中, 'bby'被复制并按表达式的模式替换(连字号优先)
源字符串: Bobby
被替换文本: b*y
替换文本: --\\0-\\0
是否规则表达式: yes
是否区分大小写: yes
结果: Bo--bby-bby
以上是StringPairReplacer和StringReplacer的介绍.