2014-09-07 5 views
0

Итак, у меня есть этот параграф.Как опустить последний символ из каждого слова в рубине?

Привет, как вы поживаете? как wew

И я хотел бы опустить весь последний символ «w» из этого абзаца? Как это сделать с ruby. Я попытался

puts(#{string}).chomp("w") 

И я тоже попробовал метод .delete .. но он просто удалил все «W» характер от всех слов, которые я не хочу это делать.

Заранее спасибо.

+1

Непонятный вопрос. Вы хотите опустить буквы, не удаляя их? Если ваша цель состоит в том, чтобы распечатать строку без w, вы можете сделать это множеством способов, но ваш 'puts (string.chomp ('w')) будет казаться правильным; он выводит «Привет, как дела, как мы», с окончательным 'w' опущенным. Вы заметите, что если вы будете делать 'puts string', вы увидите, что' w' все еще существует. –

+0

Просьба уточнить вашу конкретную проблему или добавить дополнительные сведения, чтобы точно указать, что вам нужно. Как написано в настоящее время, трудно сказать, что именно вы спрашиваете. См. [Как задать хороший вопрос?] (Http://stackoverflow.com/help/how-to-ask). – DavidPostill

+0

yes Я хочу удалить весь последний символ «w» из этой строки. Например, я хочу избавиться или удалить последнюю «w» от «wew», но не сначала «w». Но в то же время я также хочу для удаления символа «w» из «how». – Amatya

ответ

2

я хочу, чтобы избавиться или удалить последний «ж» из «WEW», но не первого «ш». в то же время я хочу, чтобы удалить «W» символ из «как» слишком.

str = "Hello how are you doing? how are wew" 
str.gsub!(/w\b/, "") 
puts str 

--output:-- 
Hello ho are you doing? ho are we 

\b в регулярное выражение означает «граница слова», который просто означает, что искать, не «слово» характер. Символами слова являются [A-Za-z0-9_]. Поэтому регулярное выражение w\b ищет «w», за которым следует что-то, что не является [A-Za-z0-9_]. Сложная вещь о \b том, что она может также соответствовать осколок небытия в начале или в конце строки:

"abcw" 
    ^
    | 

Эта строка содержит «W» следуют границе слова. И эта строка:

"wabc" 
^ 
| 

... начинается с границы слова, а затем «w».

Наконец, \b на самом деле ничего не соответствует - он просто гарантирует наличие границы текста, поэтому регулярное выражение w\b будет соответствовать только «w».

+0

Хороший ответ. Он также обрабатывает знаки препинания («Ой! У меня есть разрез, но не знаю, как». = «О! У меня есть разрез, но не знаю».) –

+0

@CarySwoveland, Да о пунктуация: см. последний ответ здесь http://www.perlmonks.org/?node_id=873885 – 7stud

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