去除特定控制字符的ruby字符串

去除特定控制字符的ruby字符串,ruby,Ruby,这很简单:如何剥离一个特殊字符的ruby字符串?以下是角色: 这是字符串,句点和结束引号之间有两个特殊字符: "Each of the levels requires logic, skill, and brute force to crush the enemy.

" 我尝试过以下方法,但没有成功: string.gsub!(/[\x00-\x1F\x7F]/, '') 和gsub/\n/ 我用的是ruby 1.9.3p125,我想出来了。gsub/\u2028/,Stringgsub

这很简单:如何剥离一个特殊字符的ruby字符串?以下是角色:

这是字符串,句点和结束引号之间有两个特殊字符:

"Each of the levels requires logic, skill, and brute force to crush the enemy.

"
我尝试过以下方法,但没有成功:

string.gsub!(/[\x00-\x1F\x7F]/, '')
和gsub/\n/

我用的是ruby 1.9.3p125,我想出来了。gsub/\u2028/,

Stringgsub将起作用,但它比


我几乎是先发布的,但我不知道ruby是否可以做到这一点。如果您使用的是1.8.6版,您就不能做到,因为它没有完全的Unicode支持。\x1F^单位分隔符,信息分隔符一。。。。。。到这里来
irb> s ="Hello,\u2028 World; here's some ctrl [\1\2\3\4\5\6] chars"
=> "Hello,\u2028 World; here's some ctrl [\u0001\u0002\u0003\u0004\u0005\u0006] chars"

irb> s.tr("\u0000-\u001f\u007f\u2028",'')
=> "Hello, World; here's some ctrl [] chars"

require 'benchmark'
Benchmark.bm {|x|
  x.report('tr')   { 1_000_000.times{ s.tr("\u0000-\u001f\u007f\u2028",'') } }
  x.report('gsub') { 1_000_000.times{ s.gsub(/[\0-\x1f\x7f\u2028]/,'') } }
}

          user     system      total        real
tr    1.440000   0.000000   1.440000 (  1.448090)
gsub  4.110000   0.000000   4.110000 (  4.127100)