как безопасно заменить все пробелы на символы подчеркивания с Рубином?
это работает для всех строк, которые имеют пробелы в них
str.downcase.tr!(" ", "_")
но строки, которые не имеют пробелов просто будут удалены
таким образом, "новая школа" изменится на "new_school", но "цвет" будет"", ничего!
8 ответов:
С места
str = "New School" str.parameterize.underscore => "new_school"без пробела
str = "school" str.parameterize.underscore => "school"изменить :- также мы можем передать '_' в качестве параметра для параметризации.
С места
str = "New School" str.parameterize('_') => "new_school"без пробела
str = "school" str.parameterize('_') => "school"
Если вы заинтересованы в получении строку случае змея, то предлагаемое решение не совсем работает, потому что вы можете получить сцепленные подчеркивания и начальные/конечные подчеркивания.
1.9.3-p0 :010 > str= " John Smith Beer " => " John Smith Beer " 1.9.3-p0 :011 > str.downcase.tr(" ", "_") => "__john___smith_beer_"это решение ниже будет лучше работать:
1.9.3-p0 :010 > str= " John Smith Beer " => " John Smith Beer " 1.9.3-p0 :012 > str.squish.downcase.tr(" ","_") => "john_smith_beer"squish-это строковый метод, предоставляемый Rails
старый вопрос, но...
на все пробел вы, вероятно, хотите что-то вроде этого:
"hey\t there world".gsub(/\s+/, '_') # hey_there_worldЭто получает вкладки и новые строки, а также пробелы и заменяет одним
_.регулярное выражение может быть изменен в соответствии с вашими потребностями. Например:
"hey\t there world".gsub(/\s/, '_') # hey__there___world
Comments