Более короткий способ удаления не символов, чем gsub (/ \ d | \ W /, "") - PullRequest
4 голосов
/ 03 февраля 2012
my_string = 'Here's the #: 49848! - but will dashes, commas & stars (*) show?'

puts src.gsub(/\d|\W/, "")

т.е. можно удалить или ("|").

Вот как я сюда попал, могу я стать короче?

src =  "Here's the #: 49848! - but will dashes, commas & stars (*) show?"
puts "A) - " + src
puts "B) - " + src.gsub(/\d\s?/, "")
puts "C) - " + src.gsub(/\W\s?/, "")
puts "D) - " + src.gsub(/\d|\W\s?/, "")
puts "E) - " + src.gsub(/\d|\W/, "")
puts "F) - " + src

A) - Here's the #: 49848! - but will dashes, commas & stars (*) show?
B) - Here's the #: ! - but will dashes, commas & stars (*) show?
C) - Heresthe49848butwilldashescommasstarsshow
D) - Heresthebutwilldashescommasstarsshow
E) - Heresthebutwilldashescommasstarsshow
F) - Here's the #: 49848! - but will dashes, commas & stars (*) show?

n.d. D) и E) это то, что я хочу для вывода. Просто персонажи.

Ответы [ 3 ]

16 голосов
/ 03 февраля 2012
my_string = "Here's the #: 49848! - but will dashes, commas & stars (*) show?"
p my_string.delete('^a-zA-Z')
#=>"Heresthebutwilldashescommasstarsshow"
4 голосов
/ 03 февраля 2012

У меня есть этот

src.gsub(/[^a-z]/i, "")

тоже не короче, но лучше читать, по моему мнению.

Модификатор i делает регистр независимым, поэтому a-zсоответствует также A-Z.Небольшое отличие состоит в том, что это регулярное выражение также заменит _, которое не заменяется вашим.

2 голосов
/ 03 февраля 2012

Если вы хотите сохранить также Unicode-буквы, используйте это:

/\PL/

Соответствует всем не буквенным символам.

...