Вы, вероятно, хотите устранить тройные и т. Д. События. В таком случае лучшим вариантом является использование счетчика матча:
# ⇓⇓⇓⇓
'Java \n\n c# \n\n c/c++'.gsub /\\n{1,}/, '\n'
В данном конкретном случае, «один или более» имеет S синтаксический сахар для него:
# ⇓
'Java \n\n c# \n\n c/c++'.gsub /\\n+/, '\n'
Если вы используете Ruby2 , есть \R
матч в любой комбинации \r
и \n
.
Для устранения ровно два occurencies, можно использовать:
# ⇓⇓⇓
'Java \n\n c# \n\n c/c++'.gsub /\\n{2}/, '\n'
И, наконец, есть функция для удаления нескольких occurencies из \n
из строки с помощью named matches и обратных ссылок:
def singlify s
s.gsub /(?<sym>\\n)\g<sym>+/, '\k<sym>'
end
singlify 'Java \n\n c# \n\n c/c++'
# Java \n c# \n c/c++'
'GSUB («\ п \ п»,«\ п»)' намного чище – shivam