验证连续字段的最佳方法是什么,如果无效,请将其更正为正确的格式?
最简单的例子是检查电话号码字段(可以采用变体格式 - > 111-111-1111,(111)111-1111等),我们理想情况下要验证这些并标准化为一种形式(让我们说:1111111111)。一种方法是使用过滤器行,然后使用正则表达式,或者我们可以使用数据验证器。但这只会告诉我们哪些数据无效但实际上并没有为我们格式化。然后我们可以使用Javascript修改的值步骤来编写一个js脚本来执行此操作。但我猜测有一种更好的方法(或者我没有遇到的内置集成)可以进行这些基本验证。或者是否建议只在单独的csv文件中转储包含无效字段的行,然后使用脚本单独解析它?
答案 0 :(得分:0)
克'天
我使用优秀的'替换字符串'处理这种情况的步骤
你可以在单步中累积应用从字符串中删除坏char的规则 - 它非常容易用于你所描述的单字符修复,最重要的是,它还允许你基于正则表达式进行搜索同样 - 只需一步即可记录您的标准化并产生干净的输出
在你的情况下,我会创建两个规则'用任何东西替换(
和)
- 然而,-
有点棘手;每次删除单个字符时都需要一个规则,因此您需要知道单个数据字段中-
的最大数量,然后将这么多行添加到字符串'中。步骤
如果这是不合适的,请考虑用户定义的java表达式'并致电replace
,例如:( (t0 != null) ? t0.replace("-","") : t0 )
正如我所述,每个人都在修复'按顺序应用 - In stream field
是输入字段名称,而Outstream field
留空指示d.i.修改字段本身 - 这是一个更复杂的例子,我搜索正则表达式并将其替换为空,对于我逃避"
双引号的情况进行转义:
In stream field Out stream field use RegEx Search Replace with
sc_srcuri N {Internal.Transformation.Filename.Directory}
re_s_sciname Y ["] \\"
re_s_sciname Y .[\x08]
re_s_sciname Y .[\x08]
re_s_sciname Y .[\x08]
re_s_sciname Y [*]
re_s_sciname Y \s*$
re_s_sciname Y ^\s*
请注意我删除最多三个删除'从这个特定字符串中控制代码[\x08]
?