রুবিতে (রেলহীন) অন্যের সাথে স্ট্রিং শুরু হলে সবচেয়ে ভাল উপায় কী?
রুবিতে (রেলহীন) অন্যের সাথে স্ট্রিং শুরু হলে সবচেয়ে ভাল উপায় কী?
উত্তর:
puts 'abcdefg'.start_with?('abc') #=> true
[সম্পাদনা] এটি এই প্রশ্নের আগে আমি জানতাম না: start_with
একাধিক যুক্তি গ্রহণ করে takes
'abcdefg'.start_with?( 'xyz', 'opq', 'ab')
start_with?
, তবে এমআরআই 1.9 রয়েছে, যেমন রেলগুলি ।
String#start_with?
।
start_with?
। আমি অনুমান করি যে আমি যখন এটি চেষ্টা করার জন্য আইআরবি লোড করেছি তখন এটি টাইপ করেছি।
starts_with?
, যা ১.৮. above এবং তারপরে কেবলমাত্র প্রবণতাযুক্ত start_with?
।
যেহেতু এখানে বেশ কয়েকটি পদ্ধতি উপস্থাপন করা হয়েছে, আমি কোনটি দ্রুততম তা আবিষ্কার করতে চেয়েছিলাম। রুবি ব্যবহার করে 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?
গোছের সবচেয়ে দ্রুততম।
রুবি 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)
"FooBar".downcase.start_with?("foo")
।
স্টেনস্লাগ দ্বারা উল্লিখিত পদ্ধতিটি সংশ্লেষযোগ্য এবং প্রশ্নের সুযোগ দেওয়া হলে এটি সঠিক উত্তর হিসাবে বিবেচনা করা উচিত। তবে এটিও জেনে রাখা উচিত যে এটি একটি নিয়মিত প্রকাশের সাথে অর্জন করা যায়, যা আপনি যদি রুবির সাথে ইতিমধ্যে পরিচিত না হন তবে এটি শেখার একটি গুরুত্বপূর্ণ দক্ষতা।
রুবুলারের সাথে একটি নাটক রাখুন: http://rubular.com/
তবে এই ক্ষেত্রে, নীচের রুবি স্টেটমেন্টটি সত্য ফিরে আসবে যদি বাম দিকের স্ট্রিংটি 'abc' দিয়ে শুরু হয়। ডানদিকে রেজেক্স আক্ষরিক \ এ এর অর্থ 'স্ট্রিংয়ের সূচনা'। রুবুলার সহ একটি খেলা আছে - এটি কীভাবে কাজ করে তা স্পষ্ট হয়ে যাবে।
'abcdefg' =~ /\Aabc/