私はこの2つの文字列string1
とを持っていますstring2
。string2
に存在するかどうかを確認するための私の最良のオプションは何ですかstring1
。Rubyで実装するにはどうすればよいですか。現在、Regex
マッチを使用しています。
質問する
1298 次
2 に答える
7
1.9.3p194 :016 > Benchmark.measure{ 1_000_000.times{ 'asd'['a'] } }
=> 0.430000 0.000000 0.430000 ( 0.431638)
1.9.3p194 :017 > Benchmark.measure{ 1_000_000.times{ 'asd' =~ /a/ } }
=> 0.420000 0.000000 0.420000 ( 0.415391)
1.9.3p194 :018 > Benchmark.measure{ 1_000_000.times{ 'asd'.include? 'a' } }
=> 0.340000 0.000000 0.340000 ( 0.343843)
驚いたことに、count('a') > 0
私に良い結果をもたらしています:
1.9.3p194 :031 > Benchmark.measure{ 10_000_000.times{ 'asd'.count('a') > 0 } }
=> 3.100000 0.000000 3.100000 ( 3.099447)
1.9.3p194 :032 > Benchmark.measure{ 10_000_000.times{ 'asd'.include?('a') } }
=> 3.220000 0.000000 3.220000 ( 3.226521)
しかし:
# count('a') > 0
1.9.3p194 :056 > Benchmark.measure{ 10_000_000.times{ 'asdrsguoing93hafehbsefu3nr3wrbibaefiafb3uwfniw4ufnsbei'.count('a') > 0 } }
=> 3.630000 0.000000 3.630000 ( 3.633329)
# include?('a')
1.9.3p194 :057 > Benchmark.measure{ 10_000_000.times{ 'asdrsguoing93hafehbsefu3nr3wrbibaefiafb3uwfniw4ufnsbei'.include?('a') } }
=> 3.220000 0.000000 3.220000 ( 3.224986)
# =~ /a/
1.9.3p194 :058 > Benchmark.measure{ 10_000_000.times{ 'asdrsguoing93hafehbsefu3nr3wrbibaefiafb3uwfniw4ufnsbei' =~ /a/ } }
=> 3.040000 0.000000 3.040000 ( 3.043130)
したがって、パフォーマンスについて厳密に言えば、文字列の分布を考慮してテストを行う必要があります (これはめったにランダムではありません)。表現力について言えば、おそらくinclude?
最良の選択です。
于 2012-08-01T12:40:12.710 に答える
0
試す
string1.include? string2
それは仕事をするべきです
于 2012-08-01T11:30:44.047 に答える