【发布时间】:2026-01-15 02:45:02
【问题描述】:
我有这样的数据,
12345 Lipa AVE, AKA 1234 LIpa AVE, Lipa City, LP, 12345
我想把它变成这个:
我要处理的所有数据都有 1 个逗号来分隔地址,另一种情况是上面的 2 个逗号。
1 逗号的示例如下,
12345 Lipa AVE, Lipa City, LP, 12345
【问题讨论】:
我有这样的数据,
12345 Lipa AVE, AKA 1234 LIpa AVE, Lipa City, LP, 12345
我想把它变成这个:
我要处理的所有数据都有 1 个逗号来分隔地址,另一种情况是上面的 2 个逗号。
1 逗号的示例如下,
12345 Lipa AVE, Lipa City, 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,方法是更改输出模式,然后一一传递数组元素。
【讨论】:
tFileInputFullRow -> tJavaRow -> tExtractDelimitedField -> tMap -> tFileOutputDelimited 属性非常直观,所以我想你会很容易找到正确的设置。输入和输出端的方案是单个字符串列,直到 tExtractDelimitedField 组件,您应该将输出模式更改为具有字符串类型的 5 列。