2010-07-15 16 views
23

मेरे पास एक विशाल टेक्स्ट फ़ाइल है जिसमें \ द्वारा विभाजित तारों का एक गुच्छा शामिल है। मेरे लिए समस्या 5 \ या 4 \ या 3 \ हो सकती है।अंतिम विभाजक द्वारा विभाजित स्ट्रिंग

मुझे पिछले \ को खींचने की आवश्यकता है इससे कोई फर्क नहीं पड़ता कि उनमें से कितने हैं। किसी भी मदद की सराहना की है।

उदाहरण:

 
I\need\this 
I\want\line\this 
Hello\give\me\all\this 

मैं उदाहरण के लिए शब्द this की जरूरत है, लेकिन स्पष्ट रूप से यह सिर्फ शब्द this नहीं है।

+0

एक "\" बिना एक स्ट्रिंग को देखते हुए समारोह पूरी स्ट्रिंग या एक खाली स्ट्रिंग लौटना चाहिए ? जैसे इसे "हैलो" पास करें, क्या इसे "हैलो" या "" वापस करना चाहिए? –

उत्तर

53
string last = inputString.Substring(inputString.LastIndexOf('\\') + 1); 
+0

+1 के साथ चेतावनी जिसे आप खाली स्ट्रिंग के लिए पहले चेक करते हैं 'अगर (! string.IsNullOrEmpty (inputString))', और यदि स्ट्रिंग में कोई "\" नहीं है, तो आप पूरी स्ट्रिंग चाहते हैं :) –

+11

नल जांच सही है, हमेशा यह जांचना चाहिए। LastIndexOf (..) + 1 के बारे में अच्छी बात यह है कि LastIndexOf (..) एक ऐसे चरित्र के लिए -1 लौटाएगा जो पाया नहीं जा सका, इसलिए नेट परिणाम यह है कि सबस्ट्रिंग को स्थिति 0 से लिया जाता है, जो प्रारंभ है स्ट्रिंग का, इसलिए पूरी स्ट्रिंग वापस आती है। –

+1

सहमत सभी बिंदुओं पर, लेकिन आवश्यकता अच्छी तरह से हो सकती है कि यदि कोई खाली स्ट्रिंग वापस नहीं किया जाता है। मैं बस इतना कह रहा हूं कि किसी को यह जांचना चाहिए कि आवश्यक व्यवहार कौन सा है। –

18
string myString = inputString.Split('\\').Last(); 
+5

.NET नियम 34 - यदि यह मौजूद है, तो इसके लिए LINQ है। :-) –

+1

शायद अतिरिक्त सुरक्षा –

+1

वास्तव में 'LastOrDefault()' होना चाहिए? मैंने सबसे खराब केस परिदृश्य (इनपुटस्ट्रिंग == स्ट्रिंग.एक्टी) सोचा होगा, 'इनपुटस्ट्रिंग। स्प्लिट (' \\ ')' अभी भी एक स्ट्रिंग की एक सरणी लौटाएगा, जो निश्चित रूप से == स्ट्रिंग है। – Flynn1179

6

लगभग इस एक भूल गया (हालांकि यह थोड़ा मुखर है):

string result = Path.GetFilename(input);

+0

यह प्रश्न का उत्तर नहीं प्रदान करता है। किसी लेखक से स्पष्टीकरण की आलोचना या अनुरोध करने के लिए, अपनी पोस्ट के नीचे एक टिप्पणी छोड़ दें। – lxg

+1

इसे कम गुणवत्ता के कारण चिह्नित किया गया है। और यह वास्तव में, यह केवल विंडोज पर काम करता है। (मुझे एहसास है कि सवाल सी # के बारे में है, जिसे आमतौर पर विंडोज वातावरण में उपयोग किया जाता है, लेकिन इसे मोनो के माध्यम से अन्य प्लेटफॉर्म पर पोर्ट किया जा सकता है।) – lxg

+3

मैं स्वीकार करूंगा कि यह केवल विंडोज़ पर काम करता है, यह संभवतः प्रासंगिक है, लेकिन यह नहीं है यह वास्तव में कम गुणवत्ता का दावा करने के लिए एक न्यायसंगत तर्क है। कुछ जवाब कुछ परिस्थितियों में काम नहीं करेंगे। वास्तव में, ओपी ने यह नहीं समझाया कि वह ऐसा क्यों करना चाहता है, यह पूरी तरह से संभव था कि एक फ़ाइल नाम निकालने के लिए वह वही था जो वह करना चाहता था, निश्चित रूप से यह किसी अन्य पाठक के लिए आदर्श हो सकता है जो इस कारण से उत्तर ढूंढ रहा है। – Flynn1179

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