我认为这是正确的,但可能已经过了。
我有一个格式化的字符串 name,name1,name2,name3,name4等
admins_count = 0
if ["name2", "name3"].include?(player_list)
admins_count += 1
end
这是计算列表中匹配的正确方法吗?
基本上,它是一个玩家列表,我想计算第二个列表中有多少名字与player_list相对应。
这对我来说是一个组合的东西
player_list = response[3].split(" ", 2)[1].chomp[1..-2]
admin_list = "Howard_Roark, Gerrit8500, fffizzz"
mod_list = "ZionRx, rodtang, fuzzamuzza, DJRedFlames, bingbong2715, ErebusAnima, Twentytenor2, zephyrnug, Tiberione, deadkill02, tTheoRyy, PyneApll, tercept, Hestehaven, Orjis87, Yaltar101"
mod_arr = mod_list.split(", ")
admin_arr = admin_list.split(", ")
player_arr = player_list.split(", ")
mods_count = 0
mod_arr.each do |s|
mods_count += 1 if player_arr.include? s
end
admins_count = 0
admin_arr.each do |s1|
admins_count += 1 if player_arr.include? s1
end
puts "players.value #{player_count}"
puts "mods.value #{mods_count}"
puts "admins.value #{admins_count}"
答案 0 :(得分:1)
如果player_list
是数组,则可以使用&
operator。它需要两个Arrays并返回一个新的Array,它只包含两个Arrays共有的项目(没有重复项)。
# I'm assuming player_list becomes a string of 'name1, name2, name3...' after
# the 'chomp' method
player_list = response[3].split(" ", 2)[1].chomp[1..-2].split(",").map(&:strip)
admins_count = (["name2", "name3"] & player_list).size
因此,如果player_list
包含“name2”,那么它将返回["name2"]
。然后我们就此致电.size
,我们会1
将其分配到admins_count
。
答案 1 :(得分:1)
我认为这更符合您的要求:
formatted_string = "name,name1,name2,name3,name4";
string_arr = formatted_string.split(",")
string_arr.each do |s|
admin_count += 1 if player_list.include? s
end