在Ab Initio图中,我有一个输入文件,其中在行中有管道分隔的值。我使用类似的DML文件来解析它:
record
decimal("|",0, maximum_length=19, sign_reserved) v1 = NULL("");
utf8 string("|", maximum_length=10) v2 = "";
utf8 string("|", maximum_length=10) v3 = "";
utf8 string("|", maximum_length=40) v4 = "";
utf8 string("|", maximum_length=255) v5 = "";
utf8 string("n", maximum_length=40) v6 = "";
end
为了在以后与其他数据进行相等比较时使用,我想让所有这些字符串都用管道分隔,所以我需要更改v6值。
我尝试通过将输出DML更改为此格式来简单地重新格式化,并将转换函数保留为空:
record
decimal("|",0, maximum_length=19, sign_reserved) v1 = NULL("");
utf8 string("|", maximum_length=10) v2 = "";
utf8 string("|", maximum_length=10) v3 = "";
utf8 string("|", maximum_length=40) v4 = "";
utf8 string("|", maximum_length=255) v5 = "";
utf8 string("|", maximum_length=40) v6 = "";
string(1) newline = "n";
end
然而,这在v6中留下了垃圾字符。后来我需要过滤v6值,使其只包含适当的字符。这个解决方案看起来不太整洁。
为了避免在v6中留下这种垃圾,我尝试使用reinterpret_as, string_concat和其他方法,但最终没有得到一个好的解决方案。如何以简单的方式更改v6的分隔符?
A == B将A的值与B的值进行比较,无论A和B是否具有相同的分隔符,比较都会返回相同的结果。如果您确实需要更改字段的分隔符,您建议的Reformat方法是正确的。如果你在v6的值中看到垃圾输出,这意味着在v6中有垃圾输入。
更广泛地说,Stack Overflow不是讨论Ab Initio问题的合适场所。您最好向Ab Initio支持人员或通过GDE访问的专用Ab Initio论坛提出您的问题。该论坛由众多Ab Initio用户和员工监控,您几乎可以保证得到及时的响应。