如何在talend集成中替换特殊字符

时间:2016-01-12 12:16:00

标签: integration talend


我想在talend整合中取代特殊的字符。
示例记录为:

id                  mrp
013SB X121MULTI     7633
013SB/X121MULTI     46696
013SBX121MULTI      8531
013SBX121MU*LTI     4939
013SBX121MULTI      1347
013SBX121MULTI      5388
013SBX121MULTI      53592
013SBX_121MULTI     449

预期结果

    id                  mrp
    013SBX121MULTI      7633
    013SBX121MULTI      46696
    013SBX121MULTI      8531
    013SBX121MULTI      4939
    013SBX121MULTI      1347
    013SBX121MULTI      5388
    013SBX121MULTI      53592
    013SBX121MULTI      449


包含在1,2,4和最后一个记录中的特殊字符。我想要替换特殊的字符,如(空格,_, - ,*等等),
任何人都可以建议这个问题

2 个答案:

答案 0 :(得分:1)

您可以轻松使用tJavaRow清除id字段。在tJavaRow中,您可以执行所有内容 Java允许您使用这些数据执行的操作。首先,我们需要找到从String中删除特殊字符的方法。根据这些solution,我们可以在tJavaRow组件中添加如下内容:

public async Task TestTasksProperly()
{
    var urls = new List<string>();
    urls.AddRange(createUrls());

    var stopwatch = Stopwatch.StartNew();
    ConcurrentQueue<string> contents = new ConcurrentQueue<string>();
    await Task.WhenAll(urls.Select(url => QueryUrl(url, contents)))).ConfigureAwait(false);

    var time = stopwatch.ElapsedMilliseconds / 1000.0;
    Console.WriteLine("Time spent in Tasks : " + time);
    Console.WriteLine("Queue size : " + contents.Count);
}

private static async Task QueryUrl(string url, ConcurrentQueue<string> contents)
{
    using (var client = new HttpClient {Timeout = TimeSpan.FromSeconds(10)})
    {
        using (var response = await client.GetAsync(url).ConfigureAwait(false))
        {
            try
            {
                var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
                contents.Enqueue(content);
            }
            catch (Exception e)
            {
            }
        }
    }
}

答案 1 :(得分:0)

以下代码应完全满足要求。此外,它将仅给出字母数字结果,不包括特殊字符(不只空格,_,-,*等。):

input_row.col1.replaceAll("[^A-Za-z0-9]", "")
  

此代码可以在tJavaRow中使用,也可以直接在tMap中使用