반응형
루비에서 문자열이 다른 문자열로 시작하는 경우 어떻게 찾을 수 있습니까?
루비(레일 없음)에서 문자열이 다른 문자열로 시작하는 경우 찾는 가장 좋은 방법은 무엇입니까?
puts 'abcdefg'.start_with?('abc') #=> true
[edit] 이 질문 전에는 몰랐던 내용입니다.start_with?
다중 인수를 사용합니다.
'abcdefg'.start_with?( 'xyz', 'opq', 'ab')
여기에는 여러 가지 방법이 제시되어 있기 때문에, 저는 어떤 방법이 가장 빠른지 알고 싶었습니다.Ruby 1.9.3p362 사용:
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 및 최신 시스템으로 업데이트된 결과:
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)
스텐슬래그가 언급한 방법은 간결하며, 문제의 범위를 고려할 때 정답으로 간주되어야 합니다.그러나 정규 표현을 사용하면 이를 달성할 수 있다는 것도 알아야 합니다. 정규 표현은 루비에 대해 아직 잘 모르신다면 배워야 할 중요한 기술입니다.
루불라와 함께 놀자: http://rubular.com/
그러나 이 경우 왼쪽 문자열이 'abc'로 시작하면 다음 루비 문이 true로 반환됩니다.오른쪽 정규식 리터럴의 \A는 '문자열의 시작'을 의미합니다.루블라를 가지고 놀아라 - 일이 어떻게 돌아가는지 분명해질 것입니다.
'abcdefg' =~ /\Aabc/
좋아해요
if ('string'[/^str/]) ...
언급URL : https://stackoverflow.com/questions/4168543/how-do-i-find-if-a-string-starts-with-another-string-in-ruby
반응형
'programing' 카테고리의 다른 글
안드로이드에서 서비스가 실행되고 있는지 확인하는 방법은 무엇입니까? (0) | 2023.06.04 |
---|---|
어떻게 하면 비주얼 스튜디오 코드, 유닉스 계열의 모든 파일에서 모든 줄 끝(EOL)을 만들 수 있습니까? (0) | 2023.06.04 |
Eclipse를 사용하여 두 파일을 비교하려면 어떻게 해야 합니까?이클립스에서 제공하는 옵션이 있습니까? (0) | 2023.06.04 |
패키지 이름(Google Analytics)과 일치하는 클라이언트를 찾을 수 없음 - 다중 제품Flavors & build종류들 (0) | 2023.06.04 |
Firebase에서 앱이 백그라운드에 있을 때 알림을 처리하는 방법 (0) | 2023.06.04 |