我有一个像这样的字符串时间格式:d-m-Y H:i
。我想格式化它:%d-%m-%Y %H:%i
。
如何使用正则表达式在%
前加上每个字母?
答案 0 :(得分:2)
这是非常基本的String#gsub
:
str = "d-m-Y H:i"
str.gsub(/[a-z]/i, '%\0')
# => "%d-%m-%Y %H:%i"
在替换字符串'%\0'
中,\0
表示整个匹配,在这种情况下是匹配的字母,因此这表示“将每个字母替换为%
,然后是字母“。
答案 1 :(得分:1)
sorted 'd-m-Y H:i'.gsub(/[a-zA-Z]+/) { |sym| "%#{sym}" }
答案 2 :(得分:1)
'd-m-Y H:i'.gsub(/(?=[a-z])/i, '%')
#=> "%d-%m-%Y %H:%i"
这将读取"将每个空字符串替换为后跟小写或大写字母的字符'%'"。 (?=[a-z])
是一个积极的先行。