2010-12-26 14 views
9

के अंतिम पुनरावृत्ति के बाद सभी टेक्स्ट को कैसे निकालें, मैं किसी विशिष्ट वर्ण के बाद किसी भी अक्षर को हटाना चाहता हूं।किसी भी स्ट्रिंग दिए गए किसी विशेष वर्ण

यह वर्ण स्ट्रिंग में कई बार मौजूद हो सकता है और मैं केवल अंतिम घटना पर इसे लागू करना चाहता हूं।

तो देता है कहते हैं कि "/" है चरित्र, यहाँ कुछ उदाहरण हैं:

http://www.ibm.com/test ==>http://www.ibm.com
नमस्ते/परीक्षण ==> हैलो

उत्तर

28
if (text.Contains('/')) 
    text = text.Substring(0, text.LastIndexOf('/')); 

या

var pos = text.LastIndexOf('/'); 
if (pos >= 0) 
    text = text.Substring(0, pos); 

(टिप्पणियों में उल्लिखित अनुसार स्ट्रिंग में '/' मौजूद नहीं होने पर केस को कवर करने के लिए संपादित किया गया)

+4

... मानते हैं कि स्ट्रिंग में '/' मौजूद है। अन्यथा आपको 'ArgumentOutOfRangeException' मिलता है। –

+1

प्रदर्शन के लिए, आप LastIndexOf चला सकते हैं, और जांच कर सकते हैं कि परिणाम -1 है या नहीं, यह जांचने के लिए कि स्ट्रिंग में वर्ण है या नहीं। इस तरह आप केवल दो बार की बजाय स्ट्रिंग वाले लोगों के माध्यम से खोजते हैं (इसमें + LastIndexOf शामिल है) जो बड़े तारों के लिए महंगा हो सकता है। –

+0

अच्छा बिंदु। संपादित। –

1

एक और विकल्प 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" 
"" ==> "" 
"  " ==> "  " 
संबंधित मुद्दे