Какой самый короткий способ вставить 2 черточки в эту строку с помощью ruby? - PullRequest
5 голосов
/ 09 ноября 2009

Вот строка: 04046955104021109

Мне нужно, чтобы он был отформатирован так: 040469551-0402-1109

Какой самый короткий / самый эффективный способ сделать это с ruby?

Ответы [ 4 ]

16 голосов
/ 09 ноября 2009

Две простые вставки будут отлично работать:

example_string.insert(-9, '-').insert(-5, '-')

Отрицательные числа означают, что вы считаете от конца строки. Вы также можете посчитать с самого начала, если хотите:

example_string.insert(9, '-').insert(14, '-')
6 голосов
/ 09 ноября 2009

как насчет

s = "04046955104021109"
"#{s[0,9]}-#{s[9,4]}-#{s[13, 4]}"
2 голосов
/ 09 ноября 2009

Вот небольшой скрипт, чтобы показать совпадение:

pattern = /\A(\d*?)(\d{4})(\d{4})\Z/

s = "04046955104021109"

output = s.gsub(pattern,'\1-\2-\3')
1 голос
/ 09 ноября 2009

Иногда я думаю, что регулярные выражения используются слишком часто, и на самом деле мне нравится решение Harpastum , но для записи ...

>> s = '04046955104021109'
>> s.sub /(....)(....)$/, '-\1-\2'
=> "040469551-0402-1109"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...