如何一次循环记录一个字符?
How can I loop thorough a record one character at a time?
如何一次一个字符循环遍历记录?我想一次查询一个字符的 ASCII 文件中的记录,以查找和替换不可打印的字符。我尝试使用循环条件但没有成功。在此先感谢您的帮助。
是的,这在 DataStage Transformer 中是可能的。
“循环条件”每次迭代都会创建一个新的输出行。它对接收到的每一行进行操作。您可能想向输出添加一个约束 link ,这仅在循环迭代完成时(对于该行)才为真。
一小段伪代码,用'?'替换每个'ä'通过逐字符循环:
// Input Link "DSLink2"
// provides a column named "text"
// Stage Variables:
NVarCHar(20) svLine := DSLink2.text
NChar(1) svReplacementChar := "?"
// Loop Variables:
NChar(1) lvCharToTest
Bit lvCharOK := 0
NVarCHar(20) lvNewLine := ''
Integer i := 0
// Loop Condition:
loop while (i < Len(svLine)) {
i = i + 1
lvCharToTest := svLine[i,1]
// replace by proper test condition or function according to your needs:
lvCharOK := lvCharToTest = 'ä'
if (lvCharOK) {
lvNewLine = lvNewLine + lvCharToTest
}
else {
lvNewLine = lvNewLine + svReplacementChar
}
}
// DSLink4_output:
If (i = Len(svLine)) {
DSLInk4_output.text := lvNewLine
}
Screenshot of a Transformer Stage showing this example
如何一次一个字符循环遍历记录?我想一次查询一个字符的 ASCII 文件中的记录,以查找和替换不可打印的字符。我尝试使用循环条件但没有成功。在此先感谢您的帮助。
是的,这在 DataStage Transformer 中是可能的。
“循环条件”每次迭代都会创建一个新的输出行。它对接收到的每一行进行操作。您可能想向输出添加一个约束 link ,这仅在循环迭代完成时(对于该行)才为真。
一小段伪代码,用'?'替换每个'ä'通过逐字符循环:
// Input Link "DSLink2"
// provides a column named "text"
// Stage Variables:
NVarCHar(20) svLine := DSLink2.text
NChar(1) svReplacementChar := "?"
// Loop Variables:
NChar(1) lvCharToTest
Bit lvCharOK := 0
NVarCHar(20) lvNewLine := ''
Integer i := 0
// Loop Condition:
loop while (i < Len(svLine)) {
i = i + 1
lvCharToTest := svLine[i,1]
// replace by proper test condition or function according to your needs:
lvCharOK := lvCharToTest = 'ä'
if (lvCharOK) {
lvNewLine = lvNewLine + lvCharToTest
}
else {
lvNewLine = lvNewLine + svReplacementChar
}
}
// DSLink4_output:
If (i = Len(svLine)) {
DSLInk4_output.text := lvNewLine
}
Screenshot of a Transformer Stage showing this example