রুবি স্ট্রিং স্লাইস ইনডেক্স: স্ট্র [এন..অনফিনিটি]


86

সহজ প্রশ্ন, কিন্তু এটি দস্তাবেজে খুঁজে পেল না।

আমি কীভাবে স্ট্রিং বা অ্যারে থেকে nচিরতরে স্লাইস করব?

>> 'Austin'[1..3]
=> "ust"
>> 'Austin'[1..]
SyntaxError: compile error
(irb):2: syntax error, unexpected ']'
    from (irb):2

4
দ্বিতীয়টি রুবি ২. 2. থেকে কাজ করবে এবং সম্ভবত এটি অর্জনের 'রেলসি' পথে পরিণত হবে - আরও তথ্যের জন্য এখানে দেখুন
এসআরাক

উত্তর:


167

বিপরীত সূচক ব্যবহার করুন:

[1..-1]

রুবির একটি উপাদান (এবং কিছু অন্যান্য ভাষায়) সরাসরি ফরোয়ার্ড সূচক এবং একটি "বিপরীত" থাকে। সুতরাং, দৈর্ঘ্য সহ STRING nহয়েছে 0..(n-1)এবং অতিরিক্ত (-n)..-1ইনডেক্স, কিন্তু কোন আরো - আপনি ব্যবহার করতে পারবেন না >=nবা <-nইনডেক্স।

  'i' 'n'|'A' 'u' 's' 't' 'i' 'n'|'A' 'u' 's' 't' 'i' 'n'|'A' 'u' 's'
  -8  -7  -6  -5  -4  -3  -2  -1   0   1   2   3   4   5   6   7   8 
<- error |                you can use this               | error ->

4
চমৎকার চিত্রণ, তবে আপনার "বৈধ" অক্ষরের ব্যবহার (যেমন স্ট্রিংগুলিতে বিদ্যমান) আমার মতে কিছুটা বিভ্রান্তিকর কারণ স্ট্রিংয়ের সীমানার বাইরের ডেটা সত্যই অপরিজ্ঞাত। অ-চরিত্রগুলি সহ এটি যে কোনও কিছু হতে পারে। যাইহোক, এরকম সুস্পষ্ট
বর্ণিত


10

রুবি ২.6 এ অন্তর্ভুক্ত অন্তহীন পরিসীমা ব্যবহার করে বেশ মার্জিত :

string = 'Austin'
string[1..] # => ustin

আশা করি এটি কারও পক্ষে কার্যকর। সেরা পন্থা থেকে এখন অবধি বেশ কয়েকটি চরিত্র কেটে ফেলে এবং অবিরাম পরিসীমা নিয়মিতভাবে গৃহীত হলে খুব পঠনযোগ্য।


3

আপনি যদি কোনও পরিবর্তনশীলকে স্ট্রিংটি বরাদ্দ করেন তবে আপনি দৈর্ঘ্য / আকার ব্যবহার করতে পারেন

string = 'Austin'
string[1..string.length]  # => ustin
string[1..string.size]    # => ustin
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.