2016-12-28 4 views
0

У меня есть текстовая строка, такая как это, и мне нужно удалить все возвраты каретки и обратную косую черту.Ruby: удалить новые строки, возврат каретки из текста

«Окс» спустился в бассейн, чтобы выпить. Когда он сильно плеснул в воду, он сокрушил молодую лягушку в грязь. Старая лягушка вскоре пропустила маленькую девочку и спросила своих братьев и сестер, что из него стало . \ R \ n \ r \ n \ «Большой большой монстр, - сказал один из них, - наступил на маленького брата с одним из его огромных ног!» Большой, был он ! - сказала старая лягушка, пыхтя. «Был ли он размером с ?» «О, намного больше!», - кричали они. «Лягушка» пылала еще больше. \ R \ n \ r \ n \ "Он не мог быть больше этого, \" она сказал. Но маленькие Лягушки все объявили, что чудовище было много, гораздо больше, и старая лягушка хранится не надувая себя все больше и больше пока, все сразу, она лопнет. \ Г \ п

Я попробовал это, но это все еще оставляет обратную косую черту.

text.gsub(/\r?\n|\r/, "") 

«вол свелся к пронзительному бассейну, чтобы пить. Он тяжело шлепнулся в воды, он раздавил молодую лягушку в грязь. Старая лягушка вскоре пропустила малышку и спросила его братья и сестры, у которого стал с ним. \ «Великий большой монстр, - сказал один из них, - шагнул на маленького брата с одной из его огромных ног! \" \ "Большой, был он! \" сказала старая лягушка, пыхтя вверх. \ "Он был такой большой, как этот? \" \ "О, намного больше! \" они плакали. Лягушка еще больше надулась. \ "Он мог не был больше чем это, - сказала она. Но маленькие Лягушки все заявили, что монстр был намного, намного больше, и старая Лягушка держала , пытаясь все больше и больше, пока, все сразу, она лопнула. "

Следующее выражение, кажется, соответствует правильному образцу в www.rubular.com включая отдельные обратные косые черты, но, кажется, не работает в моей консоли (Ruby 2.2.1)

text.gsub(/(\\r\\n)|\\/, "") 

Примечание: Для полного раскрытия ., эта строка текста захватываются в HTML-редакторе и хранится в столбец базы данных у меня есть необходимость вырезать HTML символы и я использую следующий -

text = ActionView::Base.full_sanitizer.sanitize(page.content).gsub(/\r?\n|\r\\|\\/, "") 

Я ценю любого помощь, которую вы можете предоставить!

+0

Как насчет 'text.gsub (/ \ R + | \ //, '')'? Тем не менее, escape-символы, скорее всего, будут отсутствовать в вашем фактическом вводе. –

+2

@ WiktorStribiżew это _не фактические обратные слезы_. Это то, как Ruby выдает двойные кавычки. – mudasobwa

+0

То, что по-прежнему возвращается с обратной косой чертой –

ответ

2

Наиболее эффективный способ для выполнения этой операции является с String#delete (или #delete!):

text.delete!("\r\n\\") 
p text 
puts 
puts text 

Выход:

«вол свелся к пронзительному бассейну пить Как он плеснул. в значительной степени превратился в воду, он сокрушил молодую лягушку в грязь. Старая лягушка скоро пропустила маленького и попросила своих братьев и сестер, что с ним стало .«Большой великий монстр, - сказал один из них, - наступил на младший брат с одной из его огромных ног!» «Большой, был он!» - сказала старая лягушка, пыхтя. «Был ли он такой большой, как этот?» «О, много, больше!», - кричали они. Лягушка еще больше надулась. «Он не мог иметь больше, чем это», - сказала она. Но лягушата все объявленные , что чудовище было много, гораздо больше, и старая лягушка хранятся пыхтя себя все больше и больше, пока, все сразу, она лопнет.»

вол пришел вниз к пронзительному бассейну пить, а он сильно плеснул в воду, он сокрушил молодую лягушку в грязь. Старая лягушка скоро пропустила маленькую девочку и спросила своих братьев и сестер, что с ним было . «Великий большой монстр», - сказал один из них, - наступил на маленького брата с одной из его огромных ног! »« Большой, был он! »- сказала старая лягушка, задыхаясь.« Был ли он такой большой? »« О, намного больше ! »Они кричали. Лягушка p У него еще больше. «Он не мог быть больше , чем это», - сказала она. Но маленькие Лягушки все заявили, что монстр был намного, намного больше, и старая Лягушка продолжала пыхтеть все больше и больше, пока, все сразу, она лопнула.

Результаты тестирования:

Warming up -------------------------------------- 
     String#gsub  2.826k i/100ms 
      String#tr 35.794k i/100ms 
     String#delete 37.147k i/100ms 
Calculating ------------------------------------- 
     String#gsub  29.801k (± 2.8%) i/s - 149.778k in 5.030044s 
      String#tr 399.391k (± 3.3%) i/s -  2.004M in 5.024297s 
     String#delete 411.065k (± 4.0%) i/s -  2.080M in 5.068783s 

Я использовал /\R+|\// для метода Строка # GSUB.

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