Как я могу удалить последний символ из строки, если это пунктуация, в рубине? - PullRequest
5 голосов
/ 04 апреля 2011

Гах, регулярное выражение немного сбивает с толку.

Я пытаюсь удалить все возможные символы пунктуации в конце строки:

if str[str.length-1] == '?' || str[str.length-1] == '.' || str[str.length-1] == '!' or str[str.length-1] == ',' || str[str.length-1] == ';' 
    str.chomp!
end

Я уверен, что есть лучший способсделать это.Есть указатели?

Ответы [ 7 ]

8 голосов
/ 04 апреля 2011
str.sub!(/[?.!,;]?$/, '')
  • [?.!,;] - Класс персонажа.Соответствует любому из этих 5 символов (примечание: . не является специальным в классе символов)
  • ? - Предыдущий символ или группа необязательны
  • $ - Конец строки.

Это в основном заменяет необязательный знак пунктуации в конце строки пустой строкой.Если у этого персонажа нет знаков препинания, это неоперация.

2 голосов
/ 04 апреля 2011

В первоначальном вопросе говорилось: «Удалите все возможные знаки препинания в конце строки», но только в приведенном примере показано 5, «?», «.», «!», «,», «;». Предположительно другие знаки препинания, такие как «:», «» и т. д., должны быть включены во «все возможные знаки препинания», поэтому используйте класс символов: punct: как указано в kurumi:

str.sub!(/[[:punct:]]?$/,'')
0 голосов
/ 05 апреля 2011

str.chomp! ничего не сделает в этом случае. Вы должны сделать str.chop!

0 голосов
/ 05 апреля 2011

Без использования пустой строки:

str = /[?.!,;]?\z/.match(str).pre_match

или в другом порядке

str = str.match(/[?.!,;]?\z/).pre_match
0 голосов
/ 04 апреля 2011
mystring.gsub(/[[:punct:]]+$/,"")
0 голосов
/ 04 апреля 2011

Вы должны иметь возможность использовать регулярное выражение для этого.У меня нет никакого опыта работы с ruby, но вот RegEx, который должен работать:

/(.*)[^\w\d]?$/

Вы можете использовать обратную ссылку # 1, чтобы получить строку без последнего символа пунктуации.

0 голосов
/ 04 апреля 2011

все несловарные символы.

text.gsub(/\W$/, "")

то, что он делает, это смотрит на строку, находит пунктуацию в конце и глобально заменяет ничто = удаляя ее.

Это действительно работает, и это рубиновый способ использования регулярных выражений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...