在满足条件之前采取行动

时间:2013-11-20 13:58:01

标签: ruby arrays

我觉得这应该很容易,我只是碰壁。

我需要遍历一个数组,直到满足条件。例如:

count = 0    
array = ["","","test","demo"]

我想循环遍历此数组递增计数1,直到找到第一个非空值。所以我希望索引值为"test",但是当达到"test"时,我想停止循环。

另外,作为旁注,我怎样才能找到数组中第一个非空值的索引?我想知道这两种方法,因为它们都有潜在的应用。

3 个答案:

答案 0 :(得分:6)

你可以同时拥有:)

这会找到第一个非空字符串的索引:

array = ["","","test","demo"]
array.index {|str| !str.empty?}
#=> 2

如果您愿意,可以更新{|str| !str.empty?} - 块中的计数,因为Array#index从头到尾循环遍历数组。

仅供参考:index方法是find_index

的别名

答案 1 :(得分:1)

更好地使用:

   first_non_empty_index = array.index{ |string| !string.empty? }

答案 2 :(得分:0)

做/同时

 begin
   puts arr[count]
   count+=1
 end while(arr[count].empty?)

puts count #2
puts arr[count] #test