C#-এ `String.Replace` মেথড ব্যবহার করে নির্দিষ্ট ক্যারেক্টার বা সাবস্ট্রিংকে অন্য ক্যারেক্টার/সাবস্ট্রিং দিয়ে রিপ্লেস করা যায়। স্ট্রিং ইমমিউটেবল হওয়ায় এটি নতুন স্ট্রিং রিটার্ন করে।
বেসিক সিনট্যাক্স
// ক্যারেক্টার রিপ্লেস
string result = str.Replace(oldChar, newChar);
// সাবস্ট্রিং রিপ্লেস
string result = str.Replace(oldString, newString);
// কেস-ইনসেনসিটিভ রিপ্লেস (Regex দরকার)
string result = Regex.Replace(str, oldString, newString, RegexOptions.IgnoreCase);
সম্পূর্ণ উদাহরণ
using System;
public class Program
{
public static void Main()
{
string str = "dem* text";
Console.WriteLine($"Initial string = {str}");
// '*' কে 'o' দিয়ে রিপ্লেস
string res = str.Replace('*', 'o');
Console.WriteLine($"After replacing asterisk = {res}");
}
}
আউটপুট
Initial string = dem* text
After replacing asterisk = demo text
আরও উদাহরণ
string text = "Hello World! Hello C#!";
// সব "Hello" কে "Hi" দিয়ে রিপ্লেস
string replaced = text.Replace("Hello", "Hi");
// "Hi World! Hi C#!"
// কেস-ইনসেনসিটিভ (Regex)
using System.Text.RegularExpressions;
string replacedCI = Regex.Replace(text, "hello", "Hi", RegexOptions.IgnoreCase);
// একাধিক রিপ্লেস চেইন
string multi = "a,b;c:d"
.Replace(",", "|")
.Replace(";", "|")
.Replace(":", "|");
// "a|b|c|d"
// স্ট্রিংবিল্ডার ব্যবহার (পারফরম্যান্স)
var sb = new System.Text.StringBuilder(text);
sb.Replace("Hello", "Hi");
string result = sb.ToString();
স্ট্রিং vs StringBuilder পারফরম্যান্স
| অপারেশন | String.Replace | StringBuilder.Replace |
|---|---|---|
| ইমমিউটেবল | হ্যাঁ (নতুন স্ট্রিং তৈরি) | না (ইন-প্লেস) |
| একক রিপ্লেস | দ্রুত | সমান |
| বহু রিপ্লেস (লুপে) | ধীর (অনেক অ্যালোকেশন) | দ্রুত (একটি বাফার) |
| মেমরি | অধিক | কম |
Regex.Replace - আডভান্সড রিপ্লেস
using System.Text.RegularExpressions;
string text = "Price: $100, Discount: $20";
// সব ডলার পরিমাণে টাকা চিহ্ন যোগ
string result = Regex.Replace(text, @"\$(\d+)", "৳$1");
// "Price: ৳100, Discount: ৳20"
// ফাংশন ব্যবহার করে ডাইনামিক রিপ্লেস
string result2 = Regex.Replace(text, @"\$(\d+)", m =>
{
int amount = int.Parse(m.Groups[1].Value);
return $"৳{amount * 110}"; // কনভার্ট
});
// "Price: ৳11000, Discount: ৳2200"
সাধারণ ভুল এড়ান
- রেজাল্ট এসাইন না করা: `str.Replace("a", "b");` // কোনো ইফেক্ট নেই! `str = str.Replace(...)` করুন
- নাল চেক না করা: `null.Replace(...)` → NullReferenceException
- কলচার-সেনসিটিভ রিপ্লেস: `Replace` আর্ডিন্যাল কমপারিজন করে। তুর্কি "I" সমস্যা için `StringComparison` দরকার হলে Regex ব্যবহার করুন
সারসংক্ষেপ
- সিম্পল রিপ্লেস: `str.Replace(old, new)` - সবচেয়ে সাধারণ
- চেইনিং: `str.Replace(a,b).Replace(c,d)` - এক্সপ্রেসিভ
- প্যাটার্ন/Regex: `Regex.Replace` - কমপ্লেক্স প্যাটার্ন, কেস-ইনসেনসিটিভ
- হাই-পারফরম্যান্স/বাল্ক: `StringBuilder.Replace` - লুপে অনেক রিপ্লেস হলে
- ইমমিউটেবিলিটি: সবসময় রেজাল্ট এসাইন করুন (`str = str.Replace(...)`)