首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Ruby中,如果一个字符串以另一个字符串开头,该如何查找?

在Ruby中,如果一个字符串以另一个字符串开头,该如何查找?
EN

Stack Overflow用户
提问于 2010-11-13 03:57:56
回答 4查看 112.3K关注 0票数 176

在Ruby中,如果一个字符串以另一个字符串开头(没有rails),最好的方法是什么?

EN

回答 4

Stack Overflow用户

发布于 2010-11-13 04:02:23

代码语言:javascript
复制
puts 'abcdefg'.start_with?('abc')  #=> true

在这个问题之前,我不知道这个:start_with接受多个参数。

代码语言:javascript
复制
'abcdefg'.start_with?( 'xyz', 'opq', 'ab')
票数 283
EN

Stack Overflow用户

发布于 2013-01-11 17:55:08

由于这里提供了几种方法,所以我想找出哪种方法最快。使用Ruby 1.9.3p362:

代码语言:javascript
复制
irb(main):001:0> require 'benchmark'
=> true
irb(main):002:0> Benchmark.realtime { 1.upto(10000000) { "foobar"[/\Afoo/] }}
=> 12.477248
irb(main):003:0> Benchmark.realtime { 1.upto(10000000) { "foobar" =~ /\Afoo/ }}
=> 9.593959
irb(main):004:0> Benchmark.realtime { 1.upto(10000000) { "foobar"["foo"] }}
=> 9.086909
irb(main):005:0> Benchmark.realtime { 1.upto(10000000) { "foobar".start_with?("foo") }}
=> 6.973697

所以看起来start_with?是其中最快的。

使用Ruby 2.2.2p95和更新的机器更新结果:

代码语言:javascript
复制
require 'benchmark'
Benchmark.bm do |x|
  x.report('regex[]')    { 10000000.times { "foobar"[/\Afoo/] }}
  x.report('regex')      { 10000000.times { "foobar" =~ /\Afoo/ }}
  x.report('[]')         { 10000000.times { "foobar"["foo"] }}
  x.report('start_with') { 10000000.times { "foobar".start_with?("foo") }}
end

            user       system     total       real
regex[]     4.020000   0.000000   4.020000 (  4.024469)
regex       3.160000   0.000000   3.160000 (  3.159543)
[]          2.930000   0.000000   2.930000 (  2.931889)
start_with  2.010000   0.000000   2.010000 (  2.008162)
票数 60
EN

Stack Overflow用户

发布于 2010-11-13 04:20:39

steenslag提到的方法很简洁,考虑到问题的范围,它应该被认为是正确的答案。然而,值得知道的是,这可以通过正则表达式来实现,如果您在Ruby中还不熟悉正则表达式,这是一项需要学习的重要技能。

玩一玩吧:http://rubular.com/

但是在这种情况下,如果左边的字符串以'abc‘开头,下面的ruby语句将返回true。右侧regex文本中的\A表示“字符串的开头”。试一试橡胶--事情是如何工作的将变得清晰起来。

代码语言:javascript
复制
'abcdefg' =~  /\Aabc/ 
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4168543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档