在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的分隔符?
答案 0 :(得分:3)
A == B将A的值与B的值进行比较。无论A和B是否具有相同的分隔符,比较都会返回相同的结果。如果您确实需要更改字段的分隔符,则建议使用的重新格式化方法是正确的。如果你看到v6值出现垃圾,就意味着v6中有垃圾进入。
更广泛地说,Stack Overflow不是讨论Ab Initio事物的正确场所。您最好向Ab Initio支持或通过GDE访问的专用Ab Initio论坛提出您的问题。该论坛受到众多Ab Initio用户和员工的监控,您几乎可以得到快速响应。