как преобразовать строки типа «это пример» в «это пример» под ruby - PullRequest
0 голосов
/ 25 августа 2009

Как мне преобразовать строки типа "это пример" в "это пример" в ruby?

Ответы [ 3 ]

7 голосов
/ 25 августа 2009

Самая простая версия:

"this is an example".tr(" ", "-")
#=> "this-is-an-example"

Вы также можете сделать что-то вроде этого, что немного более надежно и его легче расширять, обновляя регулярное выражение:

"this is an example".gsub(/\s+/, "-")
#=> "this-is-an-example"

Приведенное выше заменит все фрагменты пробела (любая комбинация из нескольких пробелов, табуляции, новых строк) на одну черту.

См. Справочник класса String для получения дополнительной информации о методах, которые можно использовать для работы со строками в Ruby.

Если вы пытаетесь сгенерировать строку, которую можно использовать в URL, вам также следует рассмотреть возможность удаления других не алфавитно-цифровых символов (особенно тех, которые имеют особое значение в URL) или замены их буквенно-цифровым эквивалентом ( пример , как предложил Роб Кэмерон в своем ответе).

4 голосов
/ 25 августа 2009

Если вы пытаетесь создать хороший URL-адрес, существует множество способов сделать это.

Как правило, вы хотите удалить все, что не является буквой или цифрой, а затем заменить все пробельные символы тире.

Итак:

s = "this is an 'example'"
s = s.gsub(/\W+/, ' ').strip
s = s.gsub(/\s+/,'-')

В конце s будет равно "this-is-an-example"

Я использовал исходный код из библиотеки тестирования ruby ​​под названием test , чтобы получить этот конкретный способ сделать это.

2 голосов
/ 25 августа 2009

Если вы используете Rails, взгляните на parameterize(), он делает именно то, что вы ищете:

http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html#M001367

foo = "Hello, world!"
foo.parameterize => 'hello-world'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...