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,方法是更改输出架构,然后将数组元素一一传递。
我有这样的数据,
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,方法是更改输出架构,然后将数组元素一一传递。