2011-12-28 8 views
5

उदाहरण के लिए हम इस स्ट्रिंग है:पहले अंडरस्कोर के बाद सभी पात्रों को पाने के लिए सबस्टिंग स्वरूपण लेकिन दूसरे अंडरस्कोर से पहले?

  • hello_my name_is_bob

और केवल "मेरे नाम" स्ट्रिंग के भाग प्राप्त करना चाहते हैं, मैं कैसे बस-स्ट्रिंग के साथ इस मिल सकती है?

इसके अलावा, उदाहरण में प्रारूप हमेशा एक जैसा होगा, इसलिए मुझे पहले अंडरस्कोर के बाद क्या है, लेकिन दूसरे अंडरस्कोर से पहले पुनः प्राप्त करने की आवश्यकता है।

उत्तर

14

string.Split इस के लिए क्या करेंगे, कोई जरूरत Substring में जाने के लिए:

var parts = "hello_my name_is_bob".Split('_'); 

string name = parts[1] // == "my name"; 

या, एक एक लाइनर में (हालांकि मैं इस कम पठनीय लगता है):

string name = "hello_my name_is_bob".Split('_')[1]; 
+0

अच्छी चीजें, पहले मैं डबल कोट्स का उपयोग कर रहा था लेकिन यह मुझे अपवाद दे रहा था इसलिए मैंने इसे सिंगल कोट्स में बदल दिया और यह एक चैंप की तरह काम करता था। – MDL

+0

@ एमडीएल - सी # डिलीमिट स्ट्रिंग्स में डबल कोट्स, सिंगल कोट्स डिलीमिट कैरेक्टर। – Oded

1

आप के लिए जानते हैं

var pos = str.IndexOf('_'); 
var last = str.IndexOf('_', pos+1); 
var res = str.Substring(pos+1, last-pos-1); 

यह एफएआई देगा: सुनिश्चित करें कि आप दो सुप्तविराम कि, इस कोड का उपयोग एल अगर अंडरस्कोर की संख्या दो से कम है।

2
"hello_my name_is_bob".Split('_').Skip(1).First(); 
संबंधित मुद्दे