检查一个字符串是否等于有效的月份红宝石?

时间:2014-06-09 14:16:16

标签: ruby datetime

有没有办法查看字符串是否是ruby中的有效月份名称?

4 个答案:

答案 0 :(得分:6)

你可以这样做:

require 'date'
Date::MONTHNAMES.include? string

请注意,如果字符串为true,则会返回nil。所有月份名称都是大写的,所以如果您不关心案例:

Date::MONTHNAMES.include?(string && string.capitalize)

如果你想让nil返回false:

!!string && Date::MONTHNAMES.include?(string.capitalize)

答案 1 :(得分:1)

我将使用方法#grep。它将验证所有可能的月份字符串。

require 'date'
Date::MONTHNAMES.grep(Regexp.new(string, true)).empty?

如果上述方法返回true,则表示该字符串不是有效月份名称,否则为。

我将第二个参数传递给方法Regexp::new true,以使正则表达式模式不区分大小写

答案 2 :(得分:1)

尝试使用Date.parse方法。这比使用Date::MONTHNAMES.include? string有好处,因为它会考虑到短线月份字符串(例如:jun,aug,dec等)。

require 'date'
if (Date.parse(string) rescue false)
 # code for valid month string
else
# code for invalid month string
end

答案 3 :(得分:0)

你也可以使用正则表达式

months_regex = /(Jan|Febr)uary|March|April|May|June|July|August|September|(Octo|Novem|Decem)ber/


string =~ regex

如果匹配,则位置0将返回,否则将返回nill