Ruby 重新格式化日期
我正在尝试重新格式化德语日期(例如,Ruby 重新格式化日期,ruby,regex,Ruby,Regex,我正在尝试重新格式化德语日期(例如,13.03.2011到2011-03-13) 这是我的代码: str = "13.03.2011\n14:30\n\nHannover Scorpions\n\nDEG Metro Stars\n60\n2 - 3\n\n\n\n13.03.2011\n14:30\n\nThomas Sabo Ice Tigers\n\nKrefeld Pinguine\n60\n2 - 3\n\n\n\n" str = str.gsub("/(\d{2}).(\d{2}).
13.03.2011
到2011-03-13
)
这是我的代码:
str = "13.03.2011\n14:30\n\nHannover Scorpions\n\nDEG Metro Stars\n60\n2 - 3\n\n\n\n13.03.2011\n14:30\n\nThomas Sabo Ice Tigers\n\nKrefeld Pinguine\n60\n2 - 3\n\n\n\n"
str = str.gsub("/(\d{2}).(\d{2}).(\d{4})/", "/$3-$2-$1/")
我得到与输入相同的输出。我还尝试了我的代码,有无前导斜杠和结尾斜杠,但我看不出有什么区别。有什么提示吗
我试图将正则表达式存储在变量中,如find=/(\d{2})。(\d{2})。(\d{4})/
和replace=/$3-$2-$1/
,因此我的代码如下所示:
str = "13.03.2011\n14:30\n\nHannover Scorpions\n\nDEG Metro Stars\n60\n2 - 3\n\n\n\n13.03.2011\n14:30\n\nThomas Sabo Ice Tigers\n\nKrefeld Pinguine\n60\n2 - 3\n\n\n\n"
find = /(\d{2}).(\d{2}).(\d{4})/
replace = /$3-$2-$1/
str = str.gsub(find, replace)
TypeError: no implicit conversion of Regexp into String
from (irb):4:in `gsub'
对这个问题有什么建议吗?第一个错误是regex分隔符。您不需要将正则表达式作为字符串放置。只需将它放在一个分隔符中,如
/
第二个错误是,您将捕获的组用作$1
。将其替换为\\1
str = str.gsub(/(\d{2})\.(\d{2})\.(\d{4})/, "\\3-\\2-\\1")
另外,请注意,我已将
字符转义为\.
,因为在regex中
表示除\n
以外的任何字符