我试图重新格式化德语日期(例如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'
对此问题的任何建议?
答案 0 :(得分:1)
第一个错误是正则表达式分隔符。您不需要将正则表达式作为字符串。只需将其放在//
第二个错误,您将捕获的群组用作$1
。将其替换为\\1
str = str.gsub(/(\d{2})\.(\d{2})\.(\d{4})/, "\\3-\\2-\\1")
此外,请注意我已使用.
转义\.
个字符,因为正则表达式.
表示any character except \n