【问题标题】:String Handling in TalendTalend 中的字符串处理
【发布时间】: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

【问题讨论】:

    标签: string talend separator


    【解决方案1】:

    最简单的解决方案是统一结构,然后进行映射。在这种情况下,这意味着首先将 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,方法是更改​​输出模式,然后一一传递数组元素。

    【讨论】:

    • 您好先生,谢谢您的回复。你能给我看一个例子吗?我完全搞不定。抱歉,我对 Talend 有点陌生,我正在做一个关于如何做到这一点的实验。谢谢! @欧内斯特
    • 尝试创建一个新工作,并将我在帖子中提到的组件放入:tFileInputFullRow -> tJavaRow -> tExtractDelimitedField -> tMap -> tFileOutputDelimited 属性非常直观,所以我想你会很容易找到正确的设置。输入和输出端的方案是单个字符串列,直到 tExtractDelimitedField 组件,您应该将输出模式更改为具有字符串类型的 5 列。