স্ট্রিট বিভক্ত করুন, ToList <int> () কে এক লাইনে রূপান্তর করুন


191

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

string sNumbers = "1,2,3,4,5";

আমি এটিকে বিভক্ত করতে পারি তারপর এটিকে রূপান্তর করতে পারি List<int>

sNumbers.Split( new[] { ',' } ).ToList<int>();

আমি কীভাবে স্ট্রিং অ্যারেটিকে পূর্ণসংখ্যার তালিকায় রূপান্তর করতে পারি? যাতে আমি রূপান্তর string[]করতে সক্ষম হবIEnumerable


আমাদের আজ ঠিক একই প্রশ্ন ছিল: আমাকে ক্লিক করুন
দারিও

3
"এক লাইনে" সি তে খুব শক্তিশালী খুব কড়া প্রয়োজন! </perl>
ডিএফএ

2
এই প্রশ্নটি বিশেষত সংখ্যার একটি স্ট্রিংকে বিভক্ত করতে বলে যা উত্তরটি সহজ রাখে। দারিও প্রশ্নটিতে সাধারণ স্ট্রিংয়ের জন্য ট্রাইপার্সির হ্যান্ডলগুলি (বোগ ডাউন?) বিষয়গুলি উল্লেখ করেছে mentioned
গুদেডে

উত্তর:


463
var numbers = sNumbers.Split(',').Select(Int32.Parse).ToList();

4
তালিকার ফাঁকা মান বা নাল থাকলে এই ব্যতিক্রমটি পান।
সাedদ মুহাম্মদ ইদ্রিস

@ সাইয়েদএম.আইড্রিগুলি বিভক্ত হওয়ার আগে কেবল শূন্য বা খালি পরীক্ষা করে দেখুন।
রবি ওয়াঘেলা

31

আপনি লিনকের প্রয়োজন ছাড়াই এটিও এভাবে করতে পারেন:

List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) );

// Uses Linq
var numbers = Array.ConvertAll(sNumbers.Split(','), int.Parse).ToList();

18

জোজের পথেও লিনকিউ দরকার, নামস্থানে ToList()inSystem.Linq

আপনি অ্যরিকে লিস্ট কনস্ট্রাক্টারে পাস করে লিনাক ছাড়াই তালিকায় রূপান্তর করতে পারেন:

List<int> numbers = new List<int>( Array.ConvertAll(sNumbers.Split(','), int.Parse) );

17

int.TryParseব্যতিক্রম এড়ানোর জন্য আরও ভাল ব্যবহার ;

var numbers = sNumbers
            .Split(',')
            .Where(x => int.TryParse(x, out _))
            .Select(int.Parse)
            .ToList();

10

সরাসরি নির্ধারিত মানের জন্য অ্যারে int করাও সম্ভব।

এটার মত

int[] numbers = sNumbers.Split(',').Select(Int32.Parse).ToArray();

4

এছাড়াও আপনি এই এক্সটেনশন পদ্ধতিটি ব্যবহার করতে পারেন

public static List<int> SplitToIntList(this string list, char separator = ',')
{
    return list.Split(separator).Select(Int32.Parse).ToList();
}

ব্যবহার:

var numberListString = "1, 2, 3, 4";
List<int> numberList = numberListString.SplitToIntList(',');

3

ইউনিটি 3 ডি-তে, int.Parseভাল কাজ করে না। সুতরাং আমি বেলো মত ব্যবহার করি।

List<int> intList = new List<int>( Array.ConvertAll(sNumbers.Split(','),
 new Converter<string, int>((s)=>{return Convert.ToInt32(s);}) ) );

ইউনিটি 3 ডি ব্যবহারকারীদের জন্য এই সহায়তা আশা করি।


3

আপনি নতুন সি # 6.0 ভাষার বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন:

  • (s) => { return Convert.ToInt32(s); }সংশ্লিষ্ট পদ্ধতি গ্রুপের সাথে প্রতিনিধি প্রতিস্থাপন করুনConvert.ToInt32
  • রিলান্ড্যান্ট কনস্ট্রাক্টর কল প্রতিস্থাপন করুন: এর new Converter<string, int>(Convert.ToInt32)সাথে:Convert.ToInt32

ফলাফলটি হবে:

var intList = new List<int>(Array.ConvertAll(sNumbers.Split(','), Convert.ToInt32));

2

আমার সমস্যাটি একই ছিল তবে অসুবিধার সাথে যে মাঝে মাঝে স্ট্রিংয়ে অক্ষর থাকে (কখনও কখনও খালি)।

string sNumbers = "1,2,hh,3,4,x,5";

পকোড জোনোস এক্সটেনশন পদ্ধতিটি অনুসরণ করার চেষ্টা করছেন:

public static List<int> SplitToIntList(this string list, char separator = ',')
{
      int result = 0;
      return (from s in list.Split(',')
              let isint = int.TryParse(s, out result)
              let val = result
              where isint
              select val).ToList(); 
}

1
ধন্যবাদ, যদিও আপনি পৃথককারী ঘোষণা করেন এবং তারপরে আপনি এটি ব্যবহার করেন না।
হুগো ডেলসিং

-2

আপনি এটি ব্যবহার করতে পারেন:

List<Int32> sNumberslst = sNumbers.Split(',').ConvertIntoIntList();

2
স্ট্যাক ওভারফ্লোতে স্বাগতম! যদিও এই কোড স্নিপেট একটি ব্যাখ্যা সহ প্রশ্নটি সমাধান করতে পারে, সত্যিই আপনার পোস্টের মান উন্নত করতে সহায়তা করে। মনে রাখবেন যে আপনি ভবিষ্যতে পাঠকদের জন্য প্রশ্নের উত্তর দিচ্ছেন, এবং সেই লোকেরা আপনার কোড পরামর্শের কারণগুলি জানেন না। আপনার কোডটি ব্যাখ্যামূলক মন্তব্যে ভিড় না করার চেষ্টা করুন, কারণ এটি কোড এবং ব্যাখ্যা উভয়ের পাঠযোগ্যতা হ্রাস করে!
বিদায় স্ট্যাক এক্সচেঞ্জ

2
ConversIntoIntList ফাংশনটি বের হয় না।
ফেডেরিকো নাভারতেট

এছাড়াও, আপনাকে নিম্নলিখিত শ্রেণিটি যুক্ত করতে হবে: স্ট্যাটিক পাবলিক ক্লাস হেল্পার ম্যাথডস {স্ট্যাটিক পাবলিক লিস্ট <int> কনভার্টইন্টো আইন্টলিস্ট (এই স্ট্রিং [] স্ট্রিংলিস্ট) {int x = 0; var intList = stringList.Where (str => int.TryParse (str, out x)) .Stelect (str => x) .ToList (); রিটার্ন ইনটলিস্ট; }}
ফেডেরিকো নাভারেরেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.