আমি রুবি ব্যবহার করে স্ট্রিংয়ের প্রথম অক্ষরটি কীভাবে পেতে পারি?
শেষ পর্যন্ত আমি যা করছি তা হ'ল কারও পদবি গ্রহণ করা এবং এটি থেকে একটি প্রাথমিক তৈরি করা।
সুতরাং যদি স্ট্রিংটি "স্মিথ" হত তবে আমি কেবল "এস" চাই।
"Smith".chr #=> "S"
আমি রুবি ব্যবহার করে স্ট্রিংয়ের প্রথম অক্ষরটি কীভাবে পেতে পারি?
শেষ পর্যন্ত আমি যা করছি তা হ'ল কারও পদবি গ্রহণ করা এবং এটি থেকে একটি প্রাথমিক তৈরি করা।
সুতরাং যদি স্ট্রিংটি "স্মিথ" হত তবে আমি কেবল "এস" চাই।
"Smith".chr #=> "S"
উত্তর:
আপনার কোডটি আরও পঠনযোগ্য করে তুলতে আপনি রুবির উন্মুক্ত ক্লাস ব্যবহার করতে পারেন। উদাহরণস্বরূপ, এটি:
class String
def initial
self[0,1]
end
end
আপনাকে initialকোনও স্ট্রিংয়ের পদ্ধতিটি ব্যবহার করতে দেয় । সুতরাং আপনার যদি নিম্নলিখিত ভেরিয়েবলগুলি থাকে:
last_name = "Smith"
first_name = "John"
তারপরে আপনি আদ্যক্ষরগুলি খুব পরিষ্কার এবং স্বচ্ছলভাবে পেতে পারেন:
puts first_name.initial # prints J
puts last_name.initial # prints S
এখানে উল্লিখিত অন্য পদ্ধতিটি রুবি ১.৮-তে কাজ করে না (তবে আপনাকে আর 1.8 ব্যবহার করা উচিত নয়! - তবে এই উত্তরটি পোস্ট করার পরেও এটি বেশ সাধারণ ছিল):
puts 'Smith'[0] # prints 83
অবশ্যই, আপনি যদি এটি নিয়মিতভাবে না করে থাকেন তবে পদ্ধতিটি সংজ্ঞায়িত করা ওভারকিল হতে পারে এবং আপনি সরাসরি এটি করতে পারেন:
puts last_name[0,1]
আপনি যদি রুবির (1.9.0 বা তার পরে) এর সাম্প্রতিক সংস্করণ ব্যবহার করেন তবে নিম্নলিখিতগুলির কাজ করা উচিত:
'Smith'[0] # => 'S'
আপনি যদি 1.9.0+ বা 1.8.7 ব্যবহার করেন তবে নিম্নলিখিতগুলির কাজ করা উচিত:
'Smith'.chars.first # => 'S'
আপনি যদি 1.8.7 এর বেশি পুরানো সংস্করণ ব্যবহার করেন তবে এটি কাজ করা উচিত:
'Smith'.split(//).first # => 'S'
লক্ষ্য করুন 'Smith'[0,1]নেই না 1.8 কাজ, এটা হবে না আপনি প্রথম অক্ষর এটি শুধুমাত্র আপনাকে প্রথমে দিতে হবে দিতে, বাইট ।
"Smith"[0]'এস' অক্ষরের পূর্ণসংখ্যার মানটি ফিরিয়ে দেয়। উভয় সংস্করণ মান্য করে "Smith"[0,1] == "S"।
"Smith"[0,1]1.8 (ASCII ধরে ধরে) নিয়ে কাজ করে। আপনি কেন অনুরোধকারী এবং সেই সাথে অন্য যে কেউ এই প্রশ্নটি থেকে শিখতে চান তাদের সম্পর্কে কেন এতটা ধারণা নিয়েছেন তা নিশ্চিত নয় Not উদাহরণস্বরূপ, ম্যাক ওএস এক্স রুবি 1.8 এর সাথে বান্ডিল হয়ে আসে, সুতরাং এই ব্যবহারকারীদের জন্য কোনও ইনস্টলেশন প্রয়োজন হয় না।
"Smith"[0..0]
রুবি 1.8 এবং রুবি 1.9 উভয় ক্ষেত্রেই কাজ করে।
সম্পূর্ণতার জন্য, যেহেতু রুবি ১.৯ স্ট্রিং # সিআর একটি স্ট্রিংয়ের প্রথম চরিত্রটি প্রদান করে। এটি এখনও 2.0 এবং 2.1 এ উপলব্ধ।
"Smith".chr #=> "S"
এমআরআই ১.৮. greater বা তার বেশি:
'foobarbaz'.each_char.first
>> s = 'Smith'
=> "Smith"
>> s[0]
=> "S"
"Smith"[0]'এস' অক্ষরের পূর্ণসংখ্যার মানটি ফিরিয়ে দেয়। উভয় সংস্করণ মান্য করে "Smith"[0,1] == "S"।
"Smith"[0] == ?Sরুবি 1.8 এবং 1.9 উভয়ের ক্ষেত্রেই এটি যুক্ত করব
1.9 সামনে রুবি একটি বিরক্তিকর নকশা পছন্দ কারণ - some_string[0]ফেরৎ চরিত্র কোড এই হল লিখতে সবচেয়ে পোর্টেবল উপায় - প্রথম অক্ষরের some_string[0,1]যা বলে সূচক 0 যে 1 টি অক্ষর দীর্ঘ একটি সাবস্ট্রিং জন্য।
আপনি ব্যবহার করতে পারেন truncate
> 'Smith'.truncate(1, omission: '')
#=> "S"
বা অতিরিক্ত বিন্যাসের জন্য:
> 'Smith'.truncate(4)
#=> "S..."
> 'Smith'.truncate(2, omission: '.')
#=> "S."
এই পদ্ধতিগুলির যে কোনও কাজ করবে:
name = 'Smith'
puts name.[0..0] # => S
puts name.[0] # => S
puts name.[0,1] # => S
puts name.[0].chr # => S
.পর name। এবং সর্বশেষটি সংবেদনশীল, এমনকি যদি আপনি এটি অপসারণ করেন ., কারণ এটি একই জিনিস করতে দুটি পৃথক পদ্ধতি ব্যবহার করে - [0] এবং chr() ।
'Smith'.first