我知道我们可以使用类似的东西解析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上,我只是想知道
由于
答案 0 :(得分:10)
当然,如果您真正想要的是名为n
,w1
,...... 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
以及n
,w.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