স্ট্রিং.স্প্লিট - একাধিক অক্ষর ডিলিমিটার দ্বারা


151

"] [" এর একটি সীমানা দিয়ে সি # তে একটি স্ট্রিং বিভক্ত করতে আমার সমস্যা হচ্ছে।

উদাহরণস্বরূপ, স্ট্রিং "abc] [rfd] [5] [,] [।"

সমন্বিত একটি অ্যারে উত্পাদন করা উচিত;
এবিসি
rfd
5
,

তবে আমি এটি কাজ করার মতো বলে মনে করতে পারি না, এমনকি আমি যদি রেজিএক্স চেষ্টা করি তবে আমি ডিলিমেটারে বিভাজন পেতে পারি না।

সম্পাদনা: মূলত আমি নিয়মিত প্রকাশের প্রয়োজন ছাড়াই এই সমস্যাটি সমাধান করতে চেয়েছিলাম। আমি যে সমাধানটি গ্রহণ করি তা হ'ল;

string Delimiter = "][";  
var Result[] = StringToSplit.Split(new[] { Delimiter }, StringSplitOptions.None);

এই বিভক্ত প্রশ্নটি সমাধান করতে পেরে আমি আনন্দিত।

c#  split 

আপনার কোডটি ব্যর্থ হয় যা আমাদের দেখান।
কনরাড রুডলফ

এছাড়াও, দয়া করে আপনি যা পোস্ট করেছেন তা ছাড়াও আপনি যা পোস্ট করবেন তা পোস্ট করুন, যা থেকে আপনি বেরিয়ে আসতে চান।
লাসে ভি কার্লসেন

উত্তর:


268

string.Splitএবং Regexব্যবহার উভয়ই দেখানোর জন্য :

string input = "abc][rfd][5][,][.";
string[] parts1 = input.Split(new string[] { "][" }, StringSplitOptions.None);
string[] parts2 = Regex.Split(input, @"\]\[");

5
অথবা যদি আপনার মতো ন্যূনতম কোড মলদ্বার: 'var parts1 = ইনপুট।স্প্লিট (নতুন [] {"] ["}, স্ট্রিংস্প্লিটঅ্যাপশনস নন);'
পল গ্রিমশো

2
StringSplitOptions.Noneওভার সরবরাহ করে কী লাভ input.Split(new string[] { "][" })?
বিস্কুট

1
এই অনুমান, উভয় অক্ষর অধিকার আছে? আমি যদি "[" বা "]" দ্বারা বিভক্ত করতে চাই তবে কী হবে? আমার পরীক্ষাগুলি থেকে এখন পর্যন্ত আমি অনুমান করি যে এটি একটি ভিন্ন গল্প আছে, তাই না?
সি

আপনাকে ধন্যবাদ, এটি কাজ করে !!
কুমার

3
@ সি 4 ইউ String.Split("[]".ToCharArray())এটি পৃথকভাবে [এবং] উভয় দ্বারা বিভক্ত হবে। উদাহরণস্বরূপ: হ্যালো [বিশ্ব] এটি [আমি! হ্যালো, ওয়ার্ল্ড, ইটস, মি!
মা ডুড

36
string tests = "abc][rfd][5][,][.";
string[] reslts = tests.Split(new char[] { ']', '[' }, StringSplitOptions.RemoveEmptyEntries);

8
নোট করুন যে এই পদ্ধতির ধারনা হ'ল তিনি প্রত্যেকের উপর বিভক্ত হওয়ার অর্থ] এবং [এমনকি তারা যখন [সংমিশ্রণে উপস্থিত না হন)।
লাসে ভি কার্লসেন

2
স্ট্রিংয়ের ওভারলোড Sস্প্লিট এটিকে 2 টি পৃথক ডিলিমিটার হিসাবে বিবেচনা করছে - কেবল আপনি বাকীটি ত্যাগ করছেন। (এছাড়াও অর্থ: আপনি করতে পারেন যাতে আপনি খালি মান মুছে ফেলার জন্য হবে না - একটা জমিদার করে একটি বিভেদক (আসলে স্ট্রিং একটি অ্যারে) নামে একটি স্ট্রিং কবুল করেন এটি খালি মান যখন তারা বৈধভাবে তথ্য মধ্যে উপস্থিত)
মার্ক গ্র্যাভেল

আপনার] অনুমান [সঠিক]। তিনি নির্দিষ্ট করেন নি, তাই আমি তাকে এমন কিছু দিয়েছি যা তার উদাহরণের জন্য কাজ করবে। তিনি যদি এগুলি এড়িয়ে যেতে চান না, তবে কাজ করবে। তবে আরও তথ্য না থাকলে আমরা কখনই জানতে পারব না
SwDevMan81

এটাই আমি খুঁজছিলাম। প্রশ্নে এটি একটি সাধারণ সমস্যা ছিল তবে এটি একটি উন্নত উত্তর।
বিটারব্লিউ

আমি ঠিক তাই খুঁজছিলাম। তবে সঠিক উত্তরটি আমার কাছেও খবর, আপনি জানেন না যে আপনি মার্কের বর্ণনা অনুসারে একাধিক চরিত্রের সাথে বিভক্ত হতে পারেন। বাক্য গঠনটি বেশ জঞ্জাল।
পাইটর কুলা

13

অন্য বিকল্প:

একক অক্ষর দিয়ে স্ট্রিং ডিলিমিটারটি প্রতিস্থাপন করুন, তারপরে সেই চরিত্রটির উপর বিভক্ত করুন।

string input = "abc][rfd][5][,][.";
string[] parts1 = input.Replace("][","-").Split('-');

1
এই আমি কি কি. এটি আমাকে একটি সাধারণীকরণ, সাধারণ পদ্ধতি দেয় যা প্ল্যাটফর্ম-নির্দিষ্ট কৌশল সম্পর্কে চিন্তা না করেই সমস্ত প্ল্যাটফর্মে কাজ করে।
ডেভিড বেটজ

5
ভালো বুদ্ধি নই. বিবেচনা করুন: string input = "abc][rf-d][5"। "-" "আরএফ-ডি" এ "-" একটি সীমানা হিসাবে ধরা হবে। পরিবর্তে উপরে গৃহীত উত্তর দেখুন।
গিলাদ বার্নার

সেক্ষেত্রে, প্রতিস্থাপন করুন এবং অসম্ভব চরিত্র যেমন-বা `বা এমনকি কোনও কীবোর্ডবিহীন অক্ষর যেমন ¿বা ◙ ইত্যাদির সাথে বিভক্ত করুন
সিবাস 2020

1
সমাধানটি পরিষ্কার, দৃust় এবং সাধারণীকরণের ক্ষেত্রে আমি পছন্দ করি। আমার ব্যবহারDim Levels As New List(Of String)(newSelectedTask.Replace(LevelDelimter, Chr(13)).Split(Chr(13)))
নাসেনবায়ের

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