2016-05-31 4 views

ответ

2

Это довольно простое, используя String#gsub:

str = "d-m-Y H:i" 
str.gsub(/[a-z]/i, '%\0') 
# => "%d-%m-%Y %H:%i" 

В строке замены '%\0', \0 представляет весь матч, который в данном случае является соответствием письма, так что это говорит, «Заменить каждую букву с %, за которым следует письмо. "

+0

Я не знал о '\ 0'. Хорошо знать. Я ткнул вокруг документов, которые искали его, но подошел пустой. Вы знаете, где это задокументировано? (Я нашел ссылки на него в другом месте, [здесь] (http://www.regular-expressions.info/ruby.html) для одного.) –

+0

@CarySwoveland Huh. Это, похоже, не документировано. Я не знаю, как я узнал об этом. –

1
sorted 'd-m-Y H:i'.gsub(/[a-zA-Z]+/) { |sym| "%#{sym}" } 
+1

Хотя этот код может ответить на вопрос, предоставив дополнительный контекст относительно _why_ и/или _how_ ответа , вопрос значительно улучшит его долгосрочное значение . Пожалуйста, отредактируйте свой ответ, чтобы добавить какое-то объяснение. –

1
'd-m-Y H:i'.gsub(/(?=[a-z])/i, '%') 
    #=> "%d-%m-%Y %H:%i" 

Это читает, «заменить каждую пустую строку, за которой следует строчной или прописной буквы с символа„%“». (?=[a-z]) - положительный взгляд.

Смежные вопросы