স্ট্রিংকে এক লাইনে <স্ট্রিং> তালিকায় রূপান্তর করবেন?


108

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

var names = "Brian,Joe,Chris";

এটি কি এক লাইনে List<string>সীমিত করে রূপান্তর করার কোনও উপায় আছে ,?


15
আমি "এক লাইনে" প্রয়োজনীয়তা বুঝতে পারি না। স্পষ্ট এবং বোধগম্য কোড রচনার জন্য অঙ্কুর করুন, কোনও অপারেশন যতটা সম্ভব ছোট জায়গার সাথে ফিট করার উপায় নয়।
এড এস

6
লিনকিউয়ের আগমনের সাথে সাথে "ওয়ান লাইনারগুলি" যা পাঠযোগ্য এবং পরিষ্কার, সি # আইএমওতে অনেক বেশি সাধারণ হয়ে উঠেছে।
ম্যাট গ্রেয়ার

5
@ এড এস - যদিও আমি একমত যে "এক লাইনে" এটিকে রাখার সর্বোত্তম উপায় নাও হতে পারে, তবে ম্যাট গ্রেয়ারের মতো একক-লাইন বিবৃতি খুব স্পষ্ট এবং বোধগম্য হতে থাকে। আমার ধারণা তিনি কেবল একটি forলুপ ব্যবহার করা এড়াতে চান যা আরও ক্লান্তিকর, ত্রুটির প্রবণ এবং অস্পষ্ট।
স্ট্রিপলিং ওয়ারিয়র

4
আমি বলতে চাইছি না যে ওয়ান-লাইনারগুলি অন্তর্নিহিতভাবে বোঝা শক্ত, আমি কেবলই বলছি এটির কোনও প্রয়োজন হওয়া উচিত নয়। কেবল এটি সহজ উপায় উপলব্ধ। যদি এটি এক লাইনে হয় তবে দুর্দান্ত, তবে এটি এমন কিছু নয় যা আপনার কোডটি লেখার মতো করে shape
এড এস

উত্তর:


205
List<string> result = names.Split(new char[] { ',' }).ToList();

বা ড্যানের পরামর্শ অনুসারে ক্লিনার:

List<string> result = names.Split(',').ToList();

11
আপনি হয়ত এটি সেখানে রেখে দিয়েছিলেন, তবে আমি সবসময় পুরো new char[] { }অংশটি ছেড়ে চলে যাই । এটি আমার পক্ষে কমপক্ষে সেভাবে আরও পঠনযোগ্য ।
ড্যান তাও

4
@ ড্যান: আমি সম্মত, এবং সাধারণত আমি প্যারামগুলি ওভারলোড ব্যবহার করি। তবে একটি প্রশ্নের উত্তরের জন্য মাঝে মাঝে আমার মনে হয় ভারবোসিটি আরও ভাল। সত্যই মতামত একটি বিষয়।
ম্যাট গ্রেয়ার

4
টোলিস্ট () আর কি লাভ হবে না?
জিনা মারানো

11
আপনি এনেছ System.LINQনামস্থান?
ম্যাট গ্রেয়ার


3

আমি এটি পছন্দ করি কারণ এটি যদি আপনার উত্সের স্ট্রিংটি খালি থাকে তবে খালি আইটেম সহ এটি একটি আইটেম তালিকাকে বাধা দেয়:

  IEnumerable<string> namesList = 
      !string.isNullOrEmpty(names) ? names.Split(',') : Enumerable.Empty<string>();

1

অক্ষর দ্বারা সীমাবদ্ধ একটি স্ট্রিং বিভক্ত করুন এবং সমস্ত খালি উপাদানগুলিকে ফিরিয়ে দিন।

var names = ",Brian,Joe,Chris,,,";
var charSeparator = ",";
var result = names.Split(charSeparator, StringSplitOptions.RemoveEmptyEntries);

https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netframework-4.8



0

আপনার যদি ইতিমধ্যে একটি তালিকা থাকে এবং একটি সীমিত স্ট্রিং থেকে মান যুক্ত করতে চান, আপনি ব্যবহার করতে পারেন AddRangeবা InsertRange। উদাহরণ স্বরূপ:

existingList.AddRange(names.Split(','));

0

স্ট্রিংফাই.লিবারি নুগেট প্যাকেজটি ব্যবহার করুন

//Default delimiter is ,
var split = new StringConverter().ConvertTo<List<string>>(names);

//You can also have your custom delimiter for e.g. ;
var split = new StringConverter().ConvertTo<List<string>>(names, new ConverterOptions { Delimiter = ';' });
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.