我有一个像这样的文本字符串,我需要删除所有回车和反斜杠。
牛来到一个芦苇池喝酒。当他大量涌入 水,他把一只年轻的青蛙压碎了泥浆。\ r \ n \ r \ n老青蛙 很快就错过了那个小家伙,并问他的兄弟姐妹们有什么 成了他。\ r \ n \ r \ n \"一个伟大的大怪物,\#34;他们其中一个说, \"用他的一只大脚踩到了小弟弟!\" \ r \ n \ r \ n \"大, 是他!\"老青蛙说,喘不过气来。 \"他是不是很大 这个?\" \ r \ n \ r \ n \"哦,更大!\"他们哭了。\ r \ n \ r \ n青蛙喘着粗气 还有更多。\ r \ n \ r \ n \"他不可能比这更大,\"她 说过。但小青蛙们都宣称怪物很多, 更大,老青蛙越来越多地喘不过气来 直到,一下子,她爆了。\ r \ n
我尝试了这个,但这仍然留下了反斜杠。
text.gsub(/\r?\n|\r/, "")
"牛来到一个芦苇池喝酒。当他大量涌入 水,他把一只年轻的青蛙压碎成泥。老青蛙很快 错过了小家伙,问他的兄弟姐妹们有什么 变成了他。 \#34;一个伟大的大怪物,\#34;他们其中一人说,“走了 在他的一个巨大的脚上的小弟弟!\" \"大,是他!\"说过 老青蛙,喘不过气来。 \"他这么大吗?\" \"哦, 更大!\"他们哭了。青蛙还喘不过气来。 \"他可以 没有比这更大,\"她说。但是所有的小青蛙 宣称这个怪物更大,更大,老青蛙保持着 越来越多地喘不过气来,直到她突然爆发。 "
以下表达式似乎与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 :(得分:4)
执行此操作的最有效方法是使用String#delete
(或#delete!
):
text.delete!("\r\n\\")
p text
puts
puts text
输出:
"牛来到一个芦苇池喝酒。当他大量涌入 水,他把一只年轻的青蛙压碎成泥。老青蛙很快 错过了小家伙,问他的兄弟姐妹们有什么 成为他的。\"一个伟大的大怪物,\#34;他们其中一人说,“踩到了。” 他的一个巨大的脚的小弟弟!\" \"大,是他!\"说 老青蛙,喘不过气来。 \"他这么大吗?\" \"哦,太多了 !大\"他们哭了。青蛙还喘不过气来。\"他不能拥有 比这还大,\"她说。但小青蛙们都宣称了 那怪物多得多,大得多,老青蛙不停地吹着 她自己越来越多,直到她突然爆发。"
牛来了 到一个芦苇池喝。当他大量泼水时, 他把一只年轻的青蛙压成泥浆。老青蛙很快就错过了 小家伙,问他的兄弟姐妹们成了什么 他是一个伟大的大怪物,#34;他们其中一人说,"踩得很少 兄弟,他的一个巨大的脚!""大,是他!"老青蛙说, 膨胀起来。 "他这么大吗?""哦,更大!"他们 哭了起来。青蛙还喘不过气来。"他不可能变得更大 比这个,#34;她说。但小青蛙们都宣称了 怪物更大,更大,老青蛙不停地膨胀 越来越多,直到她突然爆发。
基准测试结果:
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+|\//
作为String#gsub方法。