Talend 中的字符串处理

String Handling in Talend

我有这样的数据,

12345 Lipa AVE, 又名 1234 LIpa AVE, Lipa City, LP, 12345

我想把这个变成这个:

我要处理的所有数据都有1个逗号分隔地址,另一种情况是上面的2个逗号。

下面是 1 逗号的示例,

12345 Lipa AVE, 利帕市, LP, 12345

最简单的解决办法就是统一结构,然后做映射。在这种情况下,这意味着首先将 4 列结构(1 个逗号大小写)转换为 5 列(2 个逗号大小写),其中第二个字段为空。 示意图如下: tFileInputFullRow -> tJavaRow -> tExtractDelimitedField -> tMap -> tFileOutputDelimited

所以首先阅读整行,然后检测大小写并在必要时插入额外的列。 tJavaRow 代码如下:

output_row.line = "";
String[] elements = input_row.line.split(",");
if(elements.length == 4)
    elements[0] += ","; 
for(String element:elements)
    output_row.line += element + ",";

在 tExtractDelimitedField 中将分隔符设置为逗号,最后在 tMap 中将两个地址字段合并为一个:

row3.address2 != null && !row3.address2.equals("") ? row3.address1 + "," +  row3.address2 : row3.address1 

可以在 tJavaRow 中跳过 tExtractDelimitedField,方法是更改​​输出架构,然后将数组元素一一传递。