Rexx - 解析CSV行(';'分隔符)

时间:2013-03-15 16:29:43

标签: parsing csv rexx

我知道我们可以使用类似的东西解析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上,我只是想知道

由于

1 个答案:

答案 0 :(得分:10)

当然,如果您真正想要的是名为nw1,...... w2的{​​{1}}变量:

wn

但Rexx-y的方法是使用“词干阵列”:

do i = 1 by 1 while myline <> ''
    parse var myline word (delim) myline
    interpret "w" || i "= word"
end

甚至:

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以及nw.1中的w.2个字数。通过w.n。这是更好的,因为Rexx对.之后的部分进行了特殊处理:您可以使用任何变量,而是使用其值。所以打印所有这些单词只是:

do i = 1 to w.0
    say w.i
end

或者重新组装它们只是:

line = ""
do i = 1 to w.0
    line = line || w.i || ';'
end