從數組元素的字符串我有一個這樣的陣列:生成基於模式匹配
inList = ["edge_rabbit", "nsp_edge_rabbit", "services", "syslog", "master_rabbit", "mongod", ...]
如何可以採取與_rabbit
或元件與格式mongo[cds]
結束的元件,並且生成一個逗號分隔的字符串如下所示?
"edge_rabbit, nsp_edge_rabbit, master_rabbit"
從數組元素的字符串我有一個這樣的陣列:生成基於模式匹配
inList = ["edge_rabbit", "nsp_edge_rabbit", "services", "syslog", "master_rabbit", "mongod", ...]
如何可以採取與_rabbit
或元件與格式mongo[cds]
結束的元件,並且生成一個逗號分隔的字符串如下所示?
"edge_rabbit, nsp_edge_rabbit, master_rabbit"
這是你正在尋找使用String#end_with?
和Array#select
的人嗎?
inList = ["edge_rabbit", "nsp_edge_rabbit", "services", "syslog", "master_rabbit", "mongod"]
inList.select{|e| e.end_with?('_rabbit')}.join(", ")
# => "edge_rabbit, nsp_edge_rabbit, master_rabbit"
或
inList = ["edge_rabbit", "nsp_edge_rabbit", "services", "syslog", "master_rabbit", "mongod"]
inList.grep(/_rabbit$/).join(", ")
# => "edge_rabbit, nsp_edge_rabbit, master_rabbit"
inList = ["edge_rabbit","_rabbit_ut", "nsp_edge_rabbit", "services", "syslog", "master_rabbit", "mongod","mongos","mongoy"]
inList.grep(/_rabbit$|^mongo[cds]/).join(", ")
# => "edge_rabbit, nsp_edge_rabbit, master_rabbit, mongod, mongos"
我會使用一些小的模式:在mongo
in_list.grep(/(?:^mongo)|(?:_rabbit$)/).join(', ') # => "edge_rabbit, nsp_edge_rabbit, master_rabbit, mongod"
如果有可能有變化與其他尾隨:
in_list = ["edge_rabbit", "nsp_edge_rabbit", "services", "syslog", "master_rabbit", "mongod"]
in_list.select{ |s| s[/(?:^mongo)|(?:_rabbit$)/] }.join(', ') # => "edge_rabbit, nsp_edge_rabbit, master_rabbit, mongod"
或者字符besid ES c
,d
或s
,然後使用:
in_list.grep(/(?:^mongo[cds])|(?:_rabbit$)/).join(', ') # => "edge_rabbit, nsp_edge_rabbit, master_rabbit, mongod"
是的'#grep'的確是個不錯的方法。 –
@ The Tin Man:對Ruby新手非常有用;感謝您的支持!乾杯!! – MacUsers
我知道這會是如此簡單,我還沒有考慮這個問題。非常感謝您的及時答覆。乾杯!! – MacUsers
在另一個註釋中,是否有可能通過'include'使用模式匹配/正則表達式,比如'inList.include? ()'?例如檢查是否有任何數組元素以'_rabbit'結尾。乾杯!! – MacUsers
@MacUsers不與['#include?'](http://www.ruby-doc.org/core-2.0.0/Array.html#method-i-include-3F)但是有'#grep'你可以做。查看我的更新。 –