去除特定控制字符的ruby字符串
这很简单:如何剥离一个特殊字符的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
"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)