我知道我们可以用以下内容解析CSV行(“;”分隔符):
delim = ';'
myline="i;want;to;know;what;love;is"
parse var myline w1 (delim) w2 (delim) w3 (delim) w4 (delim) w5 (delim) w6 (delim) w7
say w1 w2 w3 w4 w5 w6 w7
我想知道是否有一种方法可以简化“w#(delim)”的迭代,以便执行以下操作:
parse var myline w1 (delim) w2 (delim) ... (delim) w6 (delim) w7
/* then we will have all w1 to w7 defined
我可以用某个数组做一个函数来做到这一点,但是否有可能在rexx上进行,我只是想知道
谢谢
最佳答案
当然,如果您真正想要的是名为n
,w1
,... w2
的wn
变量:
do i = 1 by 1 while myline <> ''
parse var myline word (delim) myline
interpret "w" || i "= word"
end
但是Rexx-y做到这一点的方法是使用“干数组”:
delim = ';'
do i = 1 by 1 while myline <> ''
parse var myline w.i (delim) myline
end
w.0 = i-1
甚至:
do i = 1 by 1 while myline <> ''
parse var myline w.i ';' myline
end
w.0 = i-1
完成后,您将拥有一个
w.
数组,该数组在w.0
中进行计数,在n
,w.1
等中通过w.2
进行计数。这样做更好,因为Rexx对w.n
之后的部分有特殊的处理:您可以使用任何变量,而将使用其值代替。因此,打印所有这些单词就是:do i = 1 to w.0
say w.i
end
或重新组装它们只是:
line = ""
do i = 1 to w.0
line = line || w.i || ';'
end
关于parsing - Rexx-解析CSV行(“;”分隔符),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15437494/