我想在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和最后一个记录中的特殊字符。我想要替换特殊的字符,如(空格,_, - ,*等等),
任何人都可以建议这个问题
答案 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中使用