我正在从字符串中解析关键字,想知道是否存在除大量if-then-else语句或使用switch语句以外的其他方法。任何方向都会有帮助
application = application.downcase
if(application.include?("ssl"))
return "SSL"
elsif(application.include?("ssh"))
return "SSH"
elsif(application.include?("dce"))
return "DCE"
elsif(application.include?("https"))
return "HTTPS"
elsif(application.include?("http"))
return "http"
else
return "nil"
答案 0 :(得分:2)
这是一种方式
def your_method(application)
application = application.downcase
%w(ssl ssh dce https).each do |p|
return p.upcase if application.include?(p)
end
application.include?("http") ? "http" : "nil"
end
答案 1 :(得分:0)
这是一个略短的方法
%w[SSL SSH DCE HTTPS http].each do |p|
return p if application =~ /#{p}/i
end
"nil"
这可能是最短的
%w[SSL SSH DCE HTTPS http].find { |p| application =~ /#{p}/i } || "nil"
除非您选择较短的变量名
app.upcase[/SSL|SSH|DCE|HTTPS/] || (app =~ /http/i ? "http" : "nil")