書いてみた。 速度的にはまだまだ改善の余地があると思う。 class String def strip_with_full_size_space s = " \s\v" self =~ /^[#{s}]+([^#{s}]+)[#{s}]+$/ ? $1 : self end end ベンチマーク用のコード。 require 'benchmark' n = 50000 s1 = " 全半混在 " Benchmark.bm do |x| x.report("s1") { n.times do s1.strip_with_full_size_space end } x.report("s1") { n.times do s1.strip end } end 結果。 user system total real s1 0.130000 0.000000 0.130000 ( 0.12225