C#-এ স্ট্রিংয়ের প্রথম N ক্যারেক্টার বের করার জন্য `Substring(0, N)` ব্যবহার করা হয়। আধুনিক C#-এ Range অপারেটর (`..`) আরও সংক্ষিপ্ত।
পদ্ধতি ১: Substring (ক্লাসিক)
string str = "Cricket is a religion in India!";
string first10 = str.Substring(0, 10); // "Cricket is"
Console.WriteLine(first10);
পদ্ধতি ২: Range অপারেটর (C# 8.0+) - সুপারিশ করা
string first10 = str[..10]; // "Cricket is"
সম্পূর্ণ উদাহরণ
using System;
public class Demo
{
public static void Main()
{
string str = "Cricket is a religion in India!";
// পদ্ধতি ১: Substring
string res1 = str.Substring(0, 10);
Console.WriteLine($"Substring: '{res1}'");
// পদ্ধতি ২: Range Operator
string res2 = str[..10];
Console.WriteLine($"Range: '{res2}'");
// সেফ ভার্সন (স্ট্রিং ছোট হলে)
string safe1 = str.Length >= 10 ? str.Substring(0, 10) : str;
string safe2 = str.Length >= 10 ? str[..10] : str;
// এক্সটেনশন মেথড
Console.WriteLine($"Safe: '{str.FirstN(10)}'");
}
}
public static class StringExtensions
{
public static string FirstN(this string str, int n)
{
if (string.IsNullOrEmpty(str) || n <= 0) return "";
return str.Length >= n ? str[..n] : str;
}
public static string LastN(this string str, int n)
{
if (string.IsNullOrEmpty(str) || n <= 0) return "";
return str.Length >= n ? str[^n..] : str;
}
}
আউটপুট
Substring: 'Cricket is'
Range: 'Cricket is'
Safe: 'Cricket is'
সাবস্ট্রিং এর র্যাঞ্জ ভেরিয়েশন (C# 8.0+)
string s = "Hello World";
s[..5] // "Hello" (প্রথম ৫)
s[5..] // " World" (৫ নম্বর ইনডেক্স থেকে শেষ)
s[2..8] // "llo Wo" (২ থেকে ৭ ইনডেক্স)
s[^5..] // "World" (শেষ ৫)
s[..^1] // "Hello Worl" (শেষ ১ বাদ)
s[2..^2] // "llo Wor" (২ থেকে শেষের ২ বাদ)
বাইট/গ্রাফিম অবস্থান বিবেচনা (ইউনিকোড/ইমোজি)
string emoji = "👨👩👧👦 Family"; // ১১ char (UTF-16)
// char-ভিত্তিক (কোড ইউনিট)
string first5Chars = emoji[..5]; // ভুল ফলাফল (partial emoji)
// গ্রাফিম ক্লাস্টার-ভিত্তিক (দৃশ্যমান ক্যারেক্টার)
using System.Globalization;
var info = new StringInfo(emoji);
string firstGrapheme = info.SubstringByTextElements(0, 1); // "👨👩👧👦"
পারফরম্যান্স তুলনা
| পদ্ধতি | রিটার্ন | স্পিড | অ্যালোকেশন |
|---|---|---|---|
| `str[..n]` | string | দ্রুত | ১ স্ট্রিং অ্যালোকেশন |
| `str.Substring(0,n)` | string | দ্রুত | ১ স্ট্রিং অ্যালোকেশন |
| `str.Take(n).ToArray()` + new string | string | ধীর | অ্যারে + স্ট্রিং |
| `StringInfo` (গ্রাফিম) | string | স্লো | এক্সট্রা অবজেক্ট |
সারসংক্ষেপ
- সহজ/পঠনীয়: `str[..10]` (C# 8+) বা `str.Substring(0, 10)`
- নিরাপদ: `str.Length >= 10 ? str[..10] : str` বা এক্সটেনশন মেথড
- ইউনিকোড/ইমোজি: `StringInfo.SubstringByTextElements` ব্যবহার করুন
- চার রিটার্ন করতে চাইলে: `str[0]` (single char)