![](/img/trans.png)
[英]ruby array with arrays how to get the array number when iterating over each of them and searching by number
[英]Iterating over an array and searching the matching element with a given string in ruby
如果我有一個像
names = ["John", "Sam", "Sandy", "Andrew", "Charlie"]
而且我必須編寫一個將數組作為參數的方法。 在該方法內部,使用each方法遍歷數組。 如果名稱以“ S”開頭,則輸出一條消息。
我將如何去做呢? 到目前為止,我只有
names.each do |i|
puts i
end
Ruby 1.9.2引入了start_with?
它接收一個字符串作為參數,並檢查它是否存在於另一個字符串中。
在您的情況下,您可以這樣做。
names.each do |name|
puts 'output a message' if name.start_with?('S')
end
但是對於更現實的情況,您應該做兩件事。
.strip
方法尾隨空格,然后搜索。 因此,您應該像這樣搜索更實際的情況。
names = ["John", "sam", " Sandy", "Andrew", "Charlie"]
names.each do |name|
puts 'output a message' if name.strip.start_with?('s', 'S')
end
您可以嘗試使用start_with?
:
names = ["John", "Sam", "Sandy", "Andrew", "Charlie"]
names.each do |name|
puts 'output a message' if name.start_with?('S')
end
# output a message (for Sam)
# output a message (for Sandy)
Ruby的方法是將select
與帶有正則表達式的塊或grep
一起使用,以過濾以'S'開頭的名稱,然后才使用each
名稱來顯示所選名稱:
names = ["John", "Sam", "Sandy", "Andrew", "Charlie"]
s_names = names.grep(/^s/i)
# or
s_names = names.select{ |name| name.downcase.start_with?('s') }
s_names.each do |name|
puts "'#{name}' starts with an 'S'"
end
# 'Sam' starts with an 'S'
# 'Sandy' starts with an 'S'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.