반응형
루비에서 문자열이 다른 문자열로 시작하는지 어떻게 알 수 있습니까?
Ruby에서 문자열이 다른 문자열로 시작하는지 확인하는 가장 좋은 방법은 무엇입니까?
puts 'abcdefg'.start_with?('abc') #=> true
[편집] 이것은이 질문을하기 전에 알지 못한 것입니다 : 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)
steenslag가 언급 한 방법은 간결하며 질문의 범위가 주어지면 정답으로 간주해야합니다. 그러나 루비에 익숙하지 않다면 배우는 데 중요한 기술인 정규식을 사용하여이를 달성 할 수 있다는 것도 알아 두어야합니다.
Rubular와 함께 플레이 : http://rubular.com/
그러나이 경우 왼쪽의 문자열이 'abc'로 시작하면 다음 루비 명령문이 true를 리턴합니다. 오른쪽의 정규 표현식 리터럴에서 \ A는 '문자열의 시작'을 의미합니다. 루블과 놀아보십시오-일이 어떻게 작동하는지 분명해질 것입니다.
'abcdefg' =~ /\Aabc/
나는 좋아한다
if ('string'[/^str/]) ...
반응형
'IT박스' 카테고리의 다른 글
각 행의 여러 인수를 사용하여 각 데이터 프레임 행에서 apply-like 함수 호출 (0) | 2020.06.17 |
---|---|
파이썬 스크립트의 실행을 어떻게 중단합니까? (0) | 2020.06.17 |
객체를 문자열로 직렬화하는 방법 (0) | 2020.06.16 |
브라우저 탭 / 창 사이의 자바 스크립트 통신 (0) | 2020.06.16 |
C # 대화 형 창이 내 코드와 상호 작용할 수 있습니까? (0) | 2020.06.16 |