2011-05-22 14 views
6

सिंगल-चार विभाजक का उपयोग करके केवल दो भागों में स्ट्रिंग को विभाजित करने का सबसे अच्छा तरीका क्या है?सी # में एक वर्ण विभाजक का उपयोग कर एक स्ट्रिंग को दो हिस्सों में कैसे विभाजित करें?

स्ट्रिंग को विभाजक के पहले उदाहरण पर विभाजित किया जाना चाहिए। विधि प्रदर्शन पर विचार करना चाहिए। यह नहीं मानना ​​चाहिए कि विभाजक स्ट्रिंग में मौजूद है, कि स्ट्रिंग में कोई अक्षर है, आदि; सामान्य उद्देश्य कोड होना चाहिए जिसे आप जहां चाहें प्लग इन कर सकते हैं।

(यह मुझे हमेशा के लिए कुछ मिनट बात की इस तरह के पुनर्लेखन के लिए जब भी मैं इसकी आवश्यकता लेता है, इसलिए मैंने सोचा कि मैं इसके लिए एक सवाल करना चाहते हैं)

उत्तर

8

तुम सच में चाहते हैं सिर्फ दो परिणाम है, एक 2 पैरामीटर के साथ स्ट्रिंग विभाजन विधि का उपयोग करें:

string[] words = myString.Split(new char[]{' '}, 2); 
+1

जो दो से अधिक हिस्सों को वापस कर सकता है, स्ट्रिंग दो में विभाजित नहीं है। –

+1

मैंने String.split का एक और संस्करण जोड़ा जो चाल चल सकता है। – slfan

+0

ओह हाँ, मैं हमेशा 'स्प्लिट()' के उस संस्करण के बारे में भूल जाता हूं - यह वही है जो मैं चाहता हूं। – Rory

0
string[] SplitStringInTwo(string input, char separator) 
    { 
     string[] results = new string[2]; 
     if (string.IsNullOrEmpty(input)) return results; 
     int splitPos = input.IndexOf(separator); 
     if (splitPos <= 0) return results; 
     results[0] = input.Substring(0, splitPos); 
     if (splitPos<input.Length) 
      results[1] = input.Substring(splitPos + 1); 
     return results; 
    } 
+0

यह सब क्यों करें जब पहले से ही स्लफन पॉइंट्स की तरह एक विधि हो। –

+0

@ रुपेश: क्या होगा अगर विभाजित चरित्र एक से अधिक बार हो? –

+0

@ करल्सन - इसके लिए एक विकल्प है। स्लफ़न के अद्यतन उत्तर की जांच करें। –

3
var part1 = myString.SubString(0, myString.IndexOf('')); 
var part2 = myString.SubString(myString.IndexOf(''), myString.Lenght); 
+2

कोड की दूसरी पंक्ति पर -1 पर अपवाद को रोकने के लिए, मैं पहले चरित्र की जांच करूंगा। –

+0

सच है, मैं बस यह मान रहा हूं कि वह जानता है कि चार पहले से मौजूद है। –

+0

मैं यह नहीं मान सकता कि चार पहले से मौजूद है; यह उस हिस्से का हिस्सा है जो इसे पूरी तरह से गैर-मामूली सवाल नहीं बनाता है। इसके अलावा प्रदर्शन-वार यह इंडेक्सऑफ की गणना दो बार करता है, जो एक बड़ी स्ट्रिंग के लिए महत्वपूर्ण हो सकता है (हालांकि छोटे)। इसके अलावा मुझे लगता है कि part2 में विभाजक चरित्र होगा। – Rory

0

(यह हमेशा मुझे कुछ ही मिनट लगते बात जब भी मैं इसकी आवश्यकता है की इस तरह के पुनर्लेखन के लिए, तो मैं सोचा था कि मैं इसके लिए एक प्रश्न पूछूंगा)

यदि आपको अक्सर इसकी आवश्यकता है, तो आप इसे extension method में करने का अपना पसंदीदा तरीका बदल सकते हैं। Teoman Soygul के सुझाव के आधार पर:

public static class StringExtensions 
{ 
    public static string[] TwoParts(this String str, char splitCharacter) 
    { 
    int splitIndex = str.IndexOf(splitCharacter); 
    if(splitIndex == -1) 
     throw new ArgumentException("Split character not found."); 

    return new string[] { 
     str.SubString(0, splitIndex), 
     str.SubString(splitIndex, myString.Lenght) }; 
    } 
} 
संबंधित मुद्दे

 संबंधित मुद्दे