আমি স্ট্রিংগুলি কীভাবে বিভক্ত করব?


106

আমি সি # (পাইথনের পটভূমি থেকে আগত) এ নিম্নলিখিতগুলি করতে চাই:

strVar = "stack"
mystr  = "This is %soverflow" % (strVar)

স্ট্রিংয়ের ভিতরে থাকা টোকেনকে এর মানটির সাথে কীভাবে প্রতিস্থাপন করব?

উত্তর:



270

এটি সি # 6.0 (ভিজ্যুয়াল স্টুডিও 2015+) হিসাবে যুক্ত করা হয়েছে।

উদাহরণ:

var planetName = "Bob";
var myName = "Ford"; 
var formattedStr = $"Hello planet {planetName}, my name is {myName}!";
// formattedStr should be "Hello planet Bob, my name is Ford!"

এটি সিনট্যাকটিক চিনি এর জন্য:

var formattedStr = String.Format("Hello planet {0}, my name is {1}!", planetName, myName);

অতিরিক্ত সম্পদ:

সি # (ভি 2) আলোচনার জন্য স্ট্রিং ইন্টারপোলেশন

সি # 6.0 ভাষা পূর্বরূপ



1
মনো ব্যবহারকারীদের জন্য: স্ট্যাকওভারফ্লো.com
প্রশ্নগুলি

এই বৈশিষ্ট্যটি যেমন একটি সুন্দর জিনিস। বিশেষত VS2015 এবং সম্পাদক সমর্থন সহ যাতে আপনি স্পষ্টভাবে আন্তঃবিবাহিত স্ট্রিংগুলি দেখতে এবং ইন্টেলিজেন্স পেতে পারেন। এটি এমনকি পদ্ধতি সঙ্গে কাজ করে! $("This feature is {GetDescription(FEATURE_AMAZING))}");
প্যাট্রিক

14

আপনি string.Formatমানগুলিকে স্ট্রিংয়ে ফেলে দিতে ব্যবহার করতে পারেন :

private static readonly string formatString = "This is {0}overflow";
...
var strVar = "stack";
var myStr = string.Format(formatString, "stack");

বিকল্প হিসাবে সি # কনটেনটেশন অপারেটর ব্যবহার করা হয়:

var strVar = "stack";
var myStr = "This is " + strVar + "overflow";

আপনি যদি প্রচুর পরিমাণে কনটেক্সেশন করছেন তবে StringBuilderক্লাসটি আরও দক্ষ যা ব্যবহার করুন :

var strVar = "stack";
var stringBuilder = new StringBuilder("This is ");
for (;;)
{
    stringBuilder.Append(strVar); // spot the deliberate mistake ;-)
}
stringBuilder.Append("overflow");
var myStr = stringBuilder.ToString();


12

আপনি যদি বর্তমানে সি # 6.0 দিয়ে ভিজ্যুয়াল স্টুডিও 2015 ব্যবহার করেন তবে নিম্নলিখিত চেষ্টা করুন:

var strVar = "stack";

string str = $"This is {strVar} OverFlow";

সেই বৈশিষ্ট্যটিকে স্ট্রিং ইন্টারপোলেশন বলা হয়।


6

তার জন্য কোনও অপারেটর নেই। আপনার ব্যবহার করা দরকার string.Format

string strVar = "stack";
string mystr  = string.Format("This is {0}soverflow", strVar);

দুর্ভাগ্যক্রমে string.Formatএকটি স্থিতিশীল পদ্ধতি, সুতরাং আপনি সহজভাবে লিখতে পারবেন না "This is {0}soverflow".Format(strVar)। কিছু লোক একটি এক্সটেনশন পদ্ধতি সংজ্ঞায়িত করেছে, এটি এই সিনট্যাক্সের অনুমতি দেয়।



4

আপনি ব্যবহার করা উচিত String.Format()। বাক্য গঠনটি কিছুটা আলাদা, পরিবর্তে সংখ্যার স্থানধারক ব্যবহৃত হয়।

উদাহরণ:

String.Format("item {0}, item {1}", "one", "two")

আরও তথ্যের জন্য http://msdn.microsoft.com/en-us/library/system.string.format.aspx এ দেখুন ।


1

আপনার কাছে 2 টি বিকল্প রয়েছে। আপনি স্ট্রিং.ফর্ম্যাট ব্যবহার করতে পারেন বা আপনি কনক্যাটেনশন অপারেটরটি ব্যবহার করতে পারেন।

String newString = String.Format("I inserted this string {0} into this one", oldstring);

অথবা

String newString = "I inserted this string " + oldstring + " into this one";

কভারগুলির নীচে String.Format()স্ট্রিংবিল্ডার ব্যবহার করে। স্ট্রিংবিল্ডার সাধারণত প্রচুর স্ট্রিং সংমিশ্রনের সময় আরও কার্যকর তবে কনক্যাটেনশন অপারেটর এক অফের জন্য উপযুক্ত। String.Format()ফর্ম্যাটিংয়ের সময় আউটপুট প্রয়োগ করা প্রয়োজন, উদাহরণস্বরূপ প্যাডিং যুক্ত করতে বা সংখ্যাসূচক মানগুলিতে শূন্য করতে। সুতরাং String.Format()একটি লুপ ব্যবহার করে সম্ভাব্যভাবে অনেকগুলি স্ট্রিংবিল্ডার ইনস্ট্যান্ট করে তুলবে। সেই পরিস্থিতিতে লুপের বাইরে এবং লুপের AppendFormat()ভিতরে ঘোষিত একক স্ট্রিংবিল্ডার ব্যবহার করা ভাল ।
ডেভিড ক্লার্ক

1

স্ট্রিং সহ স্থানধারীদের বাস্তবায়নের আরও একটি উপায় রয়েছে ep প্রতিস্থাপন, অদ্ভুতভাবে কিছু পরিস্থিতিতে সহায়তা করে:

mystr = mystr.Replace("%soverflow", strVar);

1

আপনি নিম্নলিখিত উপায় ব্যবহার করতে পারেন

স্ট্রিং বিরতি

$ বিশেষ অক্ষর একটি স্ট্র্যাপের আক্ষরিককে একটি বিভক্ত স্ট্রিং হিসাবে চিহ্নিত করে। যেমন

string name = "Mark";
string surname = "D'souza";
WriteLine($"Name :{name} Surname :{surname}" );//Name :Mark Surname :D'souza  

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

String.Format

স্ট্রিং.ফর্ম্যাট ব্যবহার করুন যদি আপনাকে অন্য স্ট্রিংয়ে কোনও অবজেক্ট, ভেরিয়েবল বা এক্সপ্রেশনের মান সন্নিবেশ করতে হয়।

WriteLine(String.Format("Name: {0}, Surname : {1}", name, surname));


0

আপনি এটি এক্সপেনসিভ দিয়ে সম্পাদন করতে পারেন: https://github.com/enderly/Expansive


সি # এর অন্তর্সম্পাদন প্রক্রিয়া একটি বিল্ট ইন রয়েছে। এই কার্যকারিতাটির জন্য একটি লাইব্রেরি অন্তর্ভুক্ত করার কোনও কারণ নেই।
প্রদর্শন করুন

2
@ ডিসপ্লে নামটিতে প্রশ্নের তারিখটি দেখুন। সি # এর সর্বদা অন্তর্নির্মিত স্ট্রিং বিভাজন থাকে না। এটা তোলে সি # 6 2016. অত: পর 2014 সালে যোগ করা হয়েছে, আমার উত্তর কারণ
anderly
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.