.NET সাবস্ট্রিং পদ্ধতি বিপদে পরিপূর্ণ। আমি এক্সটেনশন পদ্ধতিগুলি তৈরি করেছি যা বিভিন্ন ধরণের পরিস্থিতিতে পরিচালনা করে। সুন্দর জিনিসটি এটি আসল আচরণটি সংরক্ষণ করে তবে আপনি যখন একটি অতিরিক্ত "সত্য" পরামিতি যুক্ত করেন, তখন এটি ব্যতিক্রমটি পরিচালনা করতে এক্সটেনশন পদ্ধতিতে পুনরূদ্ধার করে এবং সূচি এবং দৈর্ঘ্যের উপর ভিত্তি করে সর্বাধিক যৌক্তিক মান দেয় returns উদাহরণস্বরূপ, যদি দৈর্ঘ্য নেতিবাচক হয়, এবং পিছনে গণনা করা হয়। আপনি পরীক্ষার ফলাফলগুলি দেখতে পাবেন বিভিন্ন ধরণের মানের সাথে এই ফিডলটিতে: https://dotnetfiddle.net/m1mSH9 । এটি কীভাবে সাবস্ট্রিংগুলি সমাধান করে সে সম্পর্কে একটি পরিষ্কার ধারণা দেবে।
আমি সবসময় আমার সমস্ত প্রকল্পগুলিতে এই পদ্ধতিগুলি যুক্ত করি এবং কোড ব্রেকিং নিয়ে কখনই চিন্তা করতে হবে না কারণ কিছু পরিবর্তন হয়েছে এবং সূচকটি অবৈধ। নীচে কোড দেওয়া আছে।
public static String Substring(this String val, int startIndex, bool handleIndexException)
{
if (!handleIndexException)
{ //handleIndexException is false so call the base method
return val.Substring(startIndex);
}
if (string.IsNullOrEmpty(val))
{
return val;
}
return val.Substring(startIndex < 0 ? 0 : startIndex > (val.Length - 1) ? val.Length : startIndex);
}
public static String Substring(this String val, int startIndex, int length, bool handleIndexException)
{
if (!handleIndexException)
{ //handleIndexException is false so call the base method
return val.Substring(startIndex, length);
}
if (string.IsNullOrEmpty(val))
{
return val;
}
int newfrom, newlth, instrlength = val.Length;
if (length < 0) //length is negative
{
newfrom = startIndex + length;
newlth = -1 * length;
}
else //length is positive
{
newfrom = startIndex;
newlth = length;
}
if (newfrom + newlth < 0 || newfrom > instrlength - 1)
{
return string.Empty;
}
if (newfrom < 0)
{
newlth = newfrom + newlth;
newfrom = 0;
}
return val.Substring(newfrom, Math.Min(newlth, instrlength - newfrom));
}
আমি এর পিছনে মে 2010 এ এই সম্পর্কে ব্লগ করেছি: http://jagdale.blogspot.com/2010/05/substring-extension-method-that-does.html