我的代码将文本作为输入,将其拆分为单个字符,然后返回一个数组,其中单词被分组,非单词字符是单独的项目。第一个变体:
def make_array(text)
@raw_array=text.split(//)
@result_array=[]
k=0
for i in 0...@raw_array.length
if @raw_array[i]=~/[\W]/
@result_array[k+1]=@raw_array[i]
k+=2
else
@result_array[k]='' if @result_array[k]==nil
@result_array[k]=@result_array[k]+@raw_array[i]
end
end
print @result_array.inspect
end
当输入一个一个地包含非字符时,它也会导致数组中的 nil 项
make_array("TEST TEST TEST TEST")#=>["TEST", " ", "TEST", " ", "TEST", " ", "TEST"]
make_array("TEST,,, TEST TEST TEST")#=>["TEST", ",", nil, ",", nil, ",", nil, ...]
我可以只使用紧凑的方法,然后
make_array("TEST,,, TEST TEST TEST")#=>["TEST", ",", ",", ",", " ", "TEST", " ", "TEST", " ", "TEST"]
工作正常。或者我需要重构我的迭代器代码并花一些时间,在没有紧凑的情况下获得“清晰”的结果。其实,我不想花时间在这上面。但是我的紧凑方法会导致一些错误或意外输出吗?我已经测试了一段时间,并没有注意到什么。但你有什么建议?那个紧凑的把戏是肮脏的,真的不好吗?