স্ট্রিংয়ের ভিতরে ভেরিয়েবল ব্যবহার করা


90

পিএইচপি-তে আমি নিম্নলিখিতগুলি করতে পারি:

$name = 'John';
$var = "Hello {$name}";    // => Hello John

সি # তে কি একই রকম ভাষা নির্মাণ রয়েছে?

আমি জানি সেখানে আছে String.Format();তবে আমি জানতে চাই যে স্ট্রিংয়ে কোনও ফাংশন / পদ্ধতি না জানিয়ে এটি করা যায় কিনা।

উত্তর:


224

সি # 6 এ আপনি স্ট্রিং ইন্টারপোলেশন ব্যবহার করতে পারেন :

string name = "John";
string result = $"Hello {name}";

ভিজ্যুয়াল স্টুডিওতে এটির জন্য সিনট্যাক্স হাইলাইটিং এটিকে উচ্চ পাঠযোগ্য এবং টোকেনগুলির সমস্তটি চেক করা হয়েছে।


88

এই কার্যকারিতাটি সি # 5 বা এর নিচে অন্তর্নির্মিত নয়।
আপডেট: সি # 6 এখন স্ট্রিং ইন্টারপোলেশন সমর্থন করে, আরও নতুন উত্তর দেখুন।

এটি করার প্রস্তাবিত উপায়টি হ'ল String.Format:

string name = "Scott";
string output = String.Format("Hello {0}", name);

তবে আমি স্মার্টফর্ম্যাট নামে একটি ছোট ওপেন-সোর্স লাইব্রেরি লিখেছি যা প্রসারিত হয়েছে String.Formatযাতে এটি নামযুক্ত স্থানধারক (প্রতিবিম্বের মাধ্যমে) ব্যবহার করতে পারে। সুতরাং, আপনি কি করতে পারেন:

string name = "Scott";
string output = Smart.Format("Hello {name}", new{name}); // Results in "Hello Scott".

আশা করি এটা আপনার ভালো লেগেছে!


4
স্ট্যান্ডার্ড স্ট্রিং বনাম আপনার প্রতিবিম্ব বাস্তবায়ন ব্যবহারের জন্য কোন ধরণের পারফরম্যান্স পেনাল্টি রয়েছে?
— স্টায়ফেল

আমি আপনার ইতিমধ্যে উইকিতে একটি পারফরম্যান্স পৃষ্ঠা পেয়েছি । এটি বেশ প্রতিশ্রুতিবদ্ধ দেখাচ্ছে। চমৎকার কাজ!
— স্টাইফেল

হ্যাঁ, আমি বিশ্বাস করি পারফরম্যান্স পৃষ্ঠাটি সম্ভবত আপনার প্রশ্নের সমাধান করে তবে আমি "হ্যালো {0}" বনাম "হ্যালো {নাম}" এর মধ্যে কোনও তুলনা চালাইনি। স্পষ্টতই প্রতিবিম্বটি আরও বেশি সময় নিবে। তবে, ক্যাচিং বৈশিষ্ট্যটি ব্যবহার করে পার্সিং পারফরম্যান্স উন্নত করে এবং পার্থক্যটি হ্রাস করতে পারে। যেভাবেই হোক, জিনিসগুলি দ্রুত!
— স্কট রিপ্পি

4
এটি আর সত্য নয়। সি # 6 এটিকে বৈশিষ্ট্য হিসাবে যুক্ত করেছে
— কোল জনসন

5

সি # 5 অবধি (-VS2013) এর জন্য আপনাকে একটি ফাংশন / পদ্ধতি কল করতে হবে। হয় একটি "সাধারণ" ফাংশন যেমন String.Formatবা + অপারেটরের একটি ওভারলোড।

string str = "Hello " + name; // This calls an overload of operator +.

সি # 6 এ (ভিএস ২০১৫) স্ট্রিং ইন্টারপোলেশন চালু করা হয়েছে (অন্যান্য উত্তর দ্বারা বর্ণিত হিসাবে)।


5

নিম্নলিখিত পদ্ধতি ব্যবহার করুন

1: পদ্ধতি এক

var count = 123;
var message = $"Rows count is: {count}";

2: পদ্ধতি দুটি

var count = 123;
var message = "Rows count is:" + count;

3: পদ্ধতি তিনটি

var count = 123;
var message = string.Format("Rows count is:{0}", count);

4: পদ্ধতি চার

var count = 123;
var message = @"Rows
                count
                is:{0}" + count;

5: পদ্ধতি পাঁচ

var count = 123;
var message = $@"Rows 
                 count 
                 is: {count}";

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