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


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.