0

我的代码将文本作为输入,将其拆分为单个字符,然后返回一个数组,其中单词被分组,非单词字符是单独的项目。第一个变体:

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"]

工作正常。或者我需要重构我的迭代器代码并花一些时间,在没有紧凑的情况下获得“清晰”的结果。其实,我不想花时间在这上面。但是我的紧凑方法会导致一些错误或意外输出吗?我已经测试了一段时间,并没有注意到什么。但你有什么建议?那个紧凑的把戏是肮脏的,真的不好吗?

4

1 回答 1

0

compact所做的就是从您的数组中删除 nils 。如果您确定不希望数组中出现 nils,那么应该没有任何问题。

于 2013-04-16T13:38:59.020 回答