কম্পিউটার টিউটোরিয়াল

C#-এ স্ট্রিংয়ের প্রথম ক্যারেক্টার বের করা (Substring)

C#-এ স্ট্রিংয়ের প্রথম ক্যারেক্টার বের করার সবচেয়ে সহজ পদ্ধতি হলো `Substring(0, 1)` ব্যবহার করা। তবে আরও দ্রুত এবং ইডিয়ামেটিক পদ্ধতিও রয়েছে।

পদ্ধতি ১: Substring (ক্লাসিক)


string str = "Welcome to the Planet!";
string firstChar = str.Substring(0, 1); // "W"
Console.WriteLine(firstChar);

পদ্ধতি ২: ইন্ডেক্সার (দ্রুততম, char রিটার্ন)


string str = "Welcome to the Planet!";
char firstChar = str[0]; // 'W' - char রিটার্ন করে
Console.WriteLine(firstChar);

পদ্ধতি ৩: LINQ First()


using System.Linq;

char firstChar = str.First(); // 'W'
// খালি স্ট্রিং হলে InvalidOperationException থ্রো করে
// নিরাপদ ভার্সন:
char? firstCharSafe = str.FirstOrDefault(); // '\0' যদি খালি হয়

সম্পূর্ণ উদাহরণ (তুলনা)


using System;
using System.Diagnostics;

public class Demo
{
    public static void Main()
    {
        string str = "Welcome to the Planet!";
        
        // পদ্ধতি ১: Substring
        var sw1 = Stopwatch.StartNew();
        for (int i = 0; i < 1000000; i++)
            var r1 = str.Substring(0, 1);
        sw1.Stop();
        
        // পদ্ধতি ২: Indexer
        var sw2 = Stopwatch.StartNew();
        for (int i = 0; i < 1000000; i++)
            var r2 = str[0];
        sw2.Stop();
        
        // পদ্ধতি ৩: LINQ First
        var sw3 = Stopwatch.StartNew();
        for (int i = 0; i < 1000000; i++)
            var r3 = str.First();
        sw3.Stop();
        
        Console.WriteLine($"Substring: {sw1.ElapsedMilliseconds} ms");
        Console.WriteLine($"Indexer:   {sw2.ElapsedMilliseconds} ms");
        Console.WriteLine($"LINQ First: {sw3.ElapsedMilliseconds} ms");
        
        // আউটপুট (টিপিক্যাল):
        // Substring: 45 ms
        // Indexer:   3 ms
        // LINQ First: 120 ms
    }
}

সাবস্ট্রিং এর ভেরিয়েশন


string str = "Hello World";

// প্রথম N ক্যারেক্টার
string first3 = str.Substring(0, 3); // "Hel"
string firstN = str.Substring(0, Math.Min(10, str.Length)); // সেফ

// নির্দিষ্ট পজিশন থেকে
string from5 = str.Substring(6); // "World" (ইন্ডেক্স ৬ থেকে শেষ)

// Range অপারেটর (C# 8.0+)
string first3_v2 = str[..3];        // "Hel"
string from5_v2 = str[6..];         // "World"
string middle = str[2..8];          // "llo Wo"

নাল/খালি স্ট্রিং হ্যান্ডলিং


public static char GetFirstCharSafe(string str)
{
    if (string.IsNullOrEmpty(str)) 
        return '\0'; // অথবা throw / default char
    
    return str[0];
}

// Pattern matching (C# 7+)
public static char GetFirstCharPattern(string str) => str switch
{
    null => '\0',
    "" => '\0',
    _ => str[0]
};

গ্রাফিম ক্লাস্টার (ইমোজি, কম্বাইনড ক্যারেক্টার)


string emoji = "👨‍👩‍👧‍👦 Family"; // ১১ char (UTF-16 কোড ইউনিট)

// সিম্পল indexer - ভুল ফলাফল
char firstCodeUnit = emoji[0]; //.high surrogate বা partial

// সঠিক: StringInfo ব্যবহার করুন
using System.Globalization;
var info = new StringInfo(emoji);
string firstGrapheme = info.SubstringByTextElements(0, 1); // "👨‍👩‍👧‍👦"

সারসংক্ষেপ

পদ্ধতিরিটার্ন টাইপস্পিডখালি স্ট্রিং হ্যান্ডলিং
`str[0]`charদ্রুততমIndexOutOfRangeException
`str.Substring(0,1)`stringধীর (অ্যালোকেশন)ArgumentOutOfRangeException
`str.First()`charধীরInvalidOperationException
`str.FirstOrDefault()`charধীররিটার্ন '\0' (নাল না)
`str[..1]` (Range)stringমাঝারিArgumentOutOfRangeException
সুপারিশ: সাধারণ ব্যবহারের জন্য `str[0]` (char চাইলে) বা `str[..1]` (string চাইলে) ব্যবহার করুন। নাল চেক করা নিশ্চিত করুন।
  1. জাভাতে স্ট্রিং-এ অনন্য ক্যারেক্টার খুঁজে বের করা

  2. জাভাতে স্ট্রিং-এর প্রতিটি শব্দের প্রথম অক্ষর প্রিন্ট করা

  3. পাইথনে স্ট্রিংয়ের প্রথম পুনরাবৃত্ত শব্দ খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে স্ট্রিং-এ সাবস্ট্রিং-এর nth অকুরেন্স খুঁজে বের করা