3

これは非常に簡単です。特殊文字のルビー文字列を削除するにはどうすればよいですか。文字は次のとおりです: http ://www.fileformat.info/info/unicode/char/2028/index.htm

そして、これが文字列で、ピリオドと終了引用符の間に2つの特殊文字が含まれています。

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

"

私はこれを試しましたが失敗しました:

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

gsub("/\n/", "")

私はルビー1.9.3p125を使用しています

4

2 に答える 2

7

String#gsub動作しますが、 String#trよりも一般的で効率が低くなります

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)
于 2012-04-05T02:33:26.557 に答える
1

私はそれを考え出した!.gsub(/\u2028/, '')

于 2012-04-05T00:09:32.520 に答える