Ruby Regex Gsub, когда не совпадает

Я хочу gsub все символы в строке, которые не являются буквами, и заменить их на «#». Думаю, мне нужно регулярное выражение, похожее на «gsub(), когда это регулярное выражение не совпадает».

Есть идеи?


person Mike    schedule 17.01.2011    source источник


Ответы (5)


Смотри, мама, регулярного выражения нет...

str.tr( '^A-Za-z', '#' )
person steenslag    schedule 17.01.2011
comment
^A-Za-z полностью регулярное выражение: P - person raddrick; 23.02.2017

str.gsub(/[^a-zA-Z]/, '#')

^ означает несоответствие

person Stefaan Colman    schedule 17.01.2011
comment
Бесконечно благодарен! - person Salma Gomaa; 01.02.2018

Конечно, вы можете использовать отрицание класса символов:

"aBc$%^".gsub(/[^A-Za-z]/, '#') => "aBc###"

person Andy Lindeman    schedule 17.01.2011

Попробуйте это на Codepad:

puts "kjhdfuy37685682#$$%@dfjahf".gsub(/[^a-z]/i, '#')
person detunized    schedule 17.01.2011

Слова учитываются

все символы s ... заменить на '#' str.gsub(/[^a-zA-Z]+/, '#')

каждый символ... заменить на '#' str.gsub(/[^a-zA-Z]/, '#')

person Community    schedule 17.01.2011