span8
span4
你好,
我尝试使用文本编辑器在AttributeValueMapper中设置属性。
输入可以是从A到Z的任何字符。值A、B和C应该映射到值1。所以,我想
@FindRegEx (@ value (SampleSizeCode), [a - c])
可以达到目的,但是值没有被赋值。
用AttributeCreator中的一个条件值解决了这个问题,但是我仍然对它为什么不能这样工作感兴趣。
嗨@jelle,故障原因已由@Mark2At亚搏在线Safe。
我认为StringReplacer转换器是用特定字符串(在本例中用“1”替换[a - c])替换与正则表达式匹配的字符串或子字符串的通用方法。如果您想学习一个等价于transformer的FME字符串函数,请尝试@ReplaceRegEx函数。例如:
@FindRegEx (@ value (SampleSizeCode), [a - c])
就像
[regexp {[a - c]} @ value (SampleSizeCode)]
并将第一次命中的startindex存储在字符串中。(如果添加-all swithc,它将存储最后一次命中的索引)
以实际获取regexp的(多个)目标。
对于单个对象,您可以simpy使用stringsearcher和[a - c]字符类。(如果你有很多类,我会使用conditionalattributecreator或attributerangemapper,参见本文的最后一行)
例如,在属性创建者中使用tcl:
[regexp -all -inline {yourregexp}]
内联开关使谜机将匹配项放入字符串中。
与
[regexp -all -indices {yourregexp}]您可以获得(字符串中的)匹配项的索引。
与stringlength一起,您可以获取目标对象。
在这个论坛上有一些例子(我想我发布了一些2013-2014年的地方)
无论如何,为了将字符范围映射到数字,我会将字符转换为ascii码,然后rangemap它们…这里不需要regexp。
因为findregex返回它找到文本的位置,而不是文本本身
是,AttributeValueMapper面板的左侧。有什么办法可以说
如果@findregex(@value(samplesizecode),[a-c])=0
(索引从0开始)
这将非常接近attributecreator中的条件值,我发现对于从未见过工作区的人来说,这一点不太清楚。但效果很好。
你可以在算术编辑器中用做条件?:操作员。比如说:
@findregex(@value(samplesizecode),[a-c])?1:0
这意味着如果找到一个值,它将返回1,否则返回0。我仍然很难在地图的左边看到它的工作。也许在右手边更好?或者把它放到attributecreator而不是attributevaluemapper中。所以它是有条件的,但不使用条件函数。
我们正在考虑一个类似于testfiltermapper的转换器,它具有testfilter的测试条件,但是具有attributevaluemapper的映射。它没有高优先级,因为条件功能填补了这个空白。但听起来你觉得这是一个很好的变压器。
©2019安全亚搏在线软件公司法律