数组包含字符串ruby?
如何检查数组是否包含字符串元素数组包含字符串ruby?,ruby,arrays,Ruby,Arrays,如何检查数组是否包含字符串元素 address = 'London is a capital of GB' def get_location(address) all_cities = ['Amsterdam','Moscow','Krakow','London'] city = all_cities.index {|x| x.match /address/ } if city return all_cities[city] else
address = 'London is a capital of GB'
def get_location(address)
all_cities = ['Amsterdam','Moscow','Krakow','London']
city = all_cities.index {|x| x.match /address/ }
if city
return all_cities[city]
else
address
end
end
但它返回我的完整地址
我需要从字符串中返回城市名称使用include?
代码的问题是.match是正则表达式的一种方法,并且您的字符串副本中没有一个包含地址。所以你每次都应该得到你的地址,因为你的if语句总是指向else
'city=all_cities.index{| x | x.match/address/}
如果城市
返回所有城市[城市]”
尝试使用。包括?作为此场景中的方法 我建议使用带分词的正则表达式(
\b
)
问题:
city=all_cities.index{| x | x.match/address/}
它将address
视为字符串而不是变量,因此每次代码进入else块时,都会给出整个地址
解决方案:
如果要对字符串进行不区分大小写的比较,请使用:
city=all_cities.index{x|x.match/{address}/i}
- 在上面的语句中,注意到
已包装在地址
中李>{}
- 将
选项传递给match将使其不区分大小写i
city=all_cities.index{| x | x.include?address}
因为
include?
的性能比match
好,你能解释一下你到底想要什么(输入和输出)吗?
address = 'London is a capital of GB'
def get_location(address)
all_cities = ['Amsterdam','Moscow','Krakow','London']
city = all_cities.index { |x| address.include? x }
if city
return all_cities[city]
else
address
end
end
puts get_location address
# output: London
cities = ['Amsterdam','Moscow','Krakow','London']
def find_city(cities, address)
cities.find { |city| address =~ /\b#{city}\b/ }
end
find_city(cities, 'London is a capital of GB')
#=> "London"
find_city(cities, 'Londonderry is not in London')
#=> "London"
find_city(cities, 'Toledo is not the capital of BG')
#=> nil