Talend - 将字符串拆分为 n 行
Talend - split a string to n rows
我想在 Talend 中将一列中的字符串拆分为 n 行。
例如:
column
2aabbccdd
第一个数字是我用来定义行长度的“n”,所以预期结果应该是:
第 1 行 = aa
第 2 行 = bb
第 3 行 = 抄送
第 4 行 = dd
这里的想法是迭代字符串并每 2 个字符切割一次。
有什么想法吗?
我会使用 tJavaFlex 来拆分字符串,并使用一个技巧从中分离出 n 行。
tJavaFlex的主要代码:
int n = Integer.parseInt(row1.str.substring(0, 4)); //get n from the first 4 characters
String str2 = row1.str.substring(4); //get the string after n
int nbParts = (str2.length() + 1) / n;
System.out.println("number of parts = " + nbParts);
for (int i = 0; i < nbParts; i++)
{
String part = str2.substring(i * n);
if(part.length() > n)
{
part = part.substring(0, n);
}
row2.str = part;
而tJavaFlex的结束代码只是一个右括号:
}
诀窍是在主代码中使用for循环,但只在结束代码中关闭它。
tFixedFlowInput 仅包含一列保存输入字符串。
我想在 Talend 中将一列中的字符串拆分为 n 行。
例如:
column |
---|
2aabbccdd |
第一个数字是我用来定义行长度的“n”,所以预期结果应该是:
第 1 行 = aa
第 2 行 = bb
第 3 行 = 抄送
第 4 行 = dd
这里的想法是迭代字符串并每 2 个字符切割一次。
有什么想法吗?
我会使用 tJavaFlex 来拆分字符串,并使用一个技巧从中分离出 n 行。
tJavaFlex的主要代码:
int n = Integer.parseInt(row1.str.substring(0, 4)); //get n from the first 4 characters
String str2 = row1.str.substring(4); //get the string after n
int nbParts = (str2.length() + 1) / n;
System.out.println("number of parts = " + nbParts);
for (int i = 0; i < nbParts; i++)
{
String part = str2.substring(i * n);
if(part.length() > n)
{
part = part.substring(0, n);
}
row2.str = part;
而tJavaFlex的结束代码只是一个右括号:
}
诀窍是在主代码中使用for循环,但只在结束代码中关闭它。
tFixedFlowInput 仅包含一列保存输入字符串。