एक और विकल्प String.Remove
modifiedText = text.Remove(text.LastIndexOf(separator));
का उपयोग करने के साथ कोड की जाँच के कुछ त्रुटि की तरह एक विस्तार विधि को निकाला जा सकता है है:
public static class StringExtensions
{
public static string RemoveTextAfterLastChar(this string text, char c)
{
int lastIndexOfSeparator;
if (!String.IsNullOrEmpty(text) &&
((lastIndexOfSeparator = text.LastIndexOf(c)) > -1))
{
return text.Remove(lastIndexOfSeparator);
}
else
{
return text;
}
}
}
यह की तरह इस्तेमाल किया जा सकता है:
private static void Main(string[] args)
{
List<string> inputValues = new List<string>
{
@"http://www.ibm.com/test",
"hello/test",
"//",
"SomethingElseWithoutDelimiter",
null,
" ", //spaces
};
foreach (var str in inputValues)
{
Console.WriteLine("\"{0}\" ==> \"{1}\"", str, str.RemoveTextAfterLastChar('/'));
}
}
आउटपुट:
"http://www.ibm.com/test" ==> "http://www.ibm.com"
"hello/test" ==> "hello"
"//" ==> "/"
"SomethingElseWithoutDelimiter" ==> "SomethingElseWithoutDelimiter"
"" ==> ""
" " ==> " "
... मानते हैं कि स्ट्रिंग में '/' मौजूद है। अन्यथा आपको 'ArgumentOutOfRangeException' मिलता है। –
प्रदर्शन के लिए, आप LastIndexOf चला सकते हैं, और जांच कर सकते हैं कि परिणाम -1 है या नहीं, यह जांचने के लिए कि स्ट्रिंग में वर्ण है या नहीं। इस तरह आप केवल दो बार की बजाय स्ट्रिंग वाले लोगों के माध्यम से खोजते हैं (इसमें + LastIndexOf शामिल है) जो बड़े तारों के लिए महंगा हो सकता है। –
अच्छा बिंदु। संपादित। –