রুবিতে একটি সীমানাযুক্ত স্ট্রিং কীভাবে বিভক্ত করবেন এবং এটিকে অ্যারে রূপান্তর করবেন?


233

আমার একটা স্ট্রিং আছে

"1,2,3,4"

এবং আমি এটিকে একটি অ্যারেতে রূপান্তর করতে চাই:

[1,2,3,4]

কিভাবে?


11
"1,2 | 3; 42: 4711"। স্ক্যান (/ \ d + /)। মানচিত্র {| i | i.to_i}
জোনাস এলফস্ট্রাম

উত্তর:


412
>> "1,2,3,4".split(",")
=> ["1", "2", "3", "4"]

বা পূর্ণসংখ্যার জন্য:

>> "1,2,3,4".split(",").map { |s| s.to_i }
=> [1, 2, 3, 4]

বা রুবির পরবর্তী সংস্করণগুলির জন্য (> = 1.9 - অ্যালেক্স দ্বারা নির্দেশিত):

>> "1,2,3,4".split(",").map(&:to_i)
=> [1, 2, 3, 4]

28
মনে রাখবেন, আপনি যদি> = 1.9 ব্যবহার করছেন, আপনি শুধু ব্যবহার করতে পারেন "1,2,3,4" .split ( ',') মানচিত্র (: to_i)।
অ্যালেক্স ফোর্ট

7
আপনি যদি সক্রিয় সমর্থন ব্যবহার করছেন তবে আপনি এটি করতে পারেন: মানচিত্র (&: to_i)
jonnii


19

জন্য String Integerস্থান ছাড়াString

arr = "12345"

arr.split('')

output: ["1","2","3","4","5"]

জন্য String Integerযেমন স্থান সঙ্গেString

arr = "1 2 3 4 5"

arr.split(' ')

output: ["1","2","3","4","5"]

জন্য String Integerস্থান ছাড়াInteger

arr = "12345"

arr.split('').map(&:to_i)

output: [1,2,3,4,5]

স্ট্রিং জন্য

arr = "abc"

arr.split('')

output: ["a","b","c"]

ব্যাখ্যা :

  1. arr -> স্ট্রিং যা আপনি কোনও ক্রিয়া সম্পাদন করতে যাচ্ছেন।
  2. split() -> একটি পদ্ধতি, যা ইনপুট বিভক্ত করে এবং এটিকে হিসাবে সংরক্ষণ করে।
  3. ''বা ' 'বা ','-> একটি মান, যা প্রয়োজন হয় দেওয়া পংক্তি থেকে অপসারণ করা হয়।

1

কমাটির মতো ডিলিমিটারযুক্ত স্ট্রিংকে রূপান্তর করার সহজ উপায়টি কেবল বিভাজন পদ্ধতিটি ব্যবহার করা

"1,2,3,4".split(',') # "1", "2", "3", "4"]

আপনি রুবি ডক্সে কীভাবে বিভাজন পদ্ধতি ব্যবহার করবেন সে সম্পর্কে আরও তথ্য পেতে পারেন

এই সাবস্ট্রিংয়ের একটি অ্যারে ফেরত দিয়ে একটি ডিলিমিটারের উপর ভিত্তি করে স্ট্রাস্টগুলিকে বিভক্ত করে।

যদি প্যাটার্নটি একটি স্ট্রিং হয়, তবে স্ট্রিং বিভক্ত করার সময় এর সামগ্রীগুলি ডিলিমিটার হিসাবে ব্যবহৃত হয়। যদি প্যাটার্নটি একটি একক স্থান হয় তবে স্ট্রিং সাদা অংশে বিভক্ত হয়, শীর্ষস্থানীয় সাদা স্থান এবং স্বচ্ছ স্পেস অক্ষরের রানগুলি অগ্রাহ্য করা হয়।

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

যদি প্যাটার্নটি বাদ দেওয়া হয় তবে $ এর মান; ব্যবহৃত হয়. যদি $; নিল (যা পূর্বনির্ধারিত), স্ট্রাইটটি স্পেসে বিভক্ত হয় যেন `'নির্দিষ্ট করা থাকে।

সীমা পরামিতি বাদ দেওয়া হলে, নীল ক্ষেত্রগুলি অনুসরণ করা চাপা দেওয়া হবে। যদি সীমাটি একটি ধনাত্মক সংখ্যা হয় তবে সর্বাধিক fields ক্ষেত্রের সংখ্যা ফিরে আসবে (যদি সীমাটি 1 হয়, একটি অ্যারেতে কেবলমাত্র প্রবেশদ্বার হিসাবে পুরো স্ট্রিংটি ফিরে আসে)। যদি নেতিবাচক হয় তবে ফিরে আসা ক্ষেত্রের সংখ্যার কোনও সীমা নেই এবং নাল ক্ষেত্রগুলি পিছনে চাপানো হবে না।


-1
"12345".each_char.map(&:to_i)

each_charমূলত একই হিসাবে split(''): এটি একটি অক্ষর এর অক্ষরের একটি অ্যারে বিভক্ত।

হুঁ, আমি এখন বুঝতে পেরেছি যে মূল প্রশ্নে স্ট্রিংটিতে কমা রয়েছে, সুতরাং আমার উত্তরটি সত্যই সহায়ক নয় ;-( ..


3
আপনি যা করছেন তা বোঝাতে আপনি নিজের উত্তরটি সম্পাদনা করতে পারেন?
এমজারাগোজা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.