FME里的查询替换转换器(一)

时间:2024-04-08 13:21:31

原文发布时间:2011-01-04

作者:糖糖

在Word或Excel等文本或数字编辑软件里,都有‘查询’、‘替换’的功能,该功能可以快速高效地帮助我们查找到文本或表格中的查询对象,需要的时候甚至可以一步替换成想替换的内容。在FME里同样也有这种查找或替换文本串功能的转换器——StringPairReplacer、StringReplacer、StringSearcher。以下简单介绍这三个转换器的功能和之间的差别:

一、最简单快速方便的查找替换转换器——StringPairReplacer。顾名思义, 该转换器以‘查找值 替换值 查找值 替换值…’成对的语法形式完成查询替换功能。如下

FME里的查询替换转换器(一)

连接读模块后,在转换器的第一个参数Source Attribute的下拉菜单中选择源属性中要查找的属性列;第二个参数case Sensitive选择是否区分查找对象的大小写,如果选择'Yes'表示区分大小写;第三个参数Replacement Pairs中按语法填入查找值和替换值,可以是一对或多对,注意的是查找值和替换值之间要用空格隔开;第四个参数Result Attribute可以命名储存替换后值列的名字,默认的名称为_replaced。

例1:该案例中要将源属性值中'b’替换为's’,'o'替换为'a'

源属性值是:

        bobby

Replacement Pairs设置:

        b s o a

   结果为:

         sassy

  例2:如果查询对象里也包含一个空格,必须用加一个\来区分

源属性值为:

        billy bob

成对替换值为:

        y\ b a

则结果为:

        billaob

 

   二、能用正则表达式查询替换的转换器——StringReplacer

FME里的查询替换转换器(一)

 与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的介绍.