2016-01-18 12 views
8

के अंत में संलग्न मैं इस श्रृंखला का पहला वर्ण प्राप्त करने की आवश्यकता:श्रृंखला का पहला वर्ण हटाएँ और स्ट्रिंग

String s = "X-4711"; 

और साथ संख्या के बाद डाल दिया एक ';' , जैसे: 4711; एक्स।

मैं पहले से ही साथ इसे करने की कोशिश:

String x = s.Split("-")[1] + ";" + s.Split("-")[0]; 

तो मैं समझ गया, लेकिन मैं बेहतर कर सकते हैं या यह तभी संभव तरीका है?

+1

सबसे पहले, यह 'स्प्लिट' नहीं है 'विभाजन'। सी # केस संवेदनशील है। दूसरा, आपका समाधान काफी सरल, समझने योग्य और कुशल है जो मुझे लगता है कि आपके इनपुट के आधार पर। _better_ वास्तव में आपका क्या मतलब है? बेशक आप एक और तरीके पा सकते हैं लेकिन आपका समाधान मेरी राय में अच्छा है। यदि आपको लगता है कि यह पर्याप्त नहीं है, तो कम से कम _why_ समझाएं। –

+0

'स्ट्रिंग परिणाम = एस। सब्स्ट्रिंग (2) + ";" + s.Substring (0, 1); ' –

+0

मुझे यह डबल 'स्प्लिट' पसंद नहीं है मैं इसे थोड़ा क्लीनर चाहता हूं। –

उत्तर

18
var items = s.Split ("-"); 
string x = String.Format ("{0};{1}", items[1], items[0]); 

अधिकतर यह इसे थोड़ा और अधिक पढ़ने योग्य और माइक्रो-ऑप्टिमाइज़ेशन को केवल एक बार विभाजित करने के लिए बनाता है।

संपादित करें:

टिप्पणियों में से कुछ के रूप में, ने बताया है अगर आप सी # 6 का उपयोग कर रहे आप स्ट्रिंग स्वरूपित करने के लिए String Interpolation का उपयोग कर सकते। यह वही काम करता है, केवल थोड़ा बेहतर दिखता है।

var items = s.Split ("-"); 
string x = $"{items[1]};{items[0])}"; 
+1

इसे एक से ऊपर उठाया गया, मैं स्ट्रिंग.फॉर्मैट के उपयोग में केवल मामूली परिवर्तन जोड़ूंगा: स्ट्रिंग.फॉर्मैट ($ "{आइटम [1]}; {आइटम [0]}"); –

+0

@ पेड्रोजी.डिया मानते हैं कि ओपी सी # 6 का उपयोग कर रहा है। –

+0

हम सभी नहीं हैं? :) –

2

स्ट्रिंग.Substring: इस उदाहरण से एक सबस्ट्रिंग पुनर्प्राप्त करता है। Substring एक निर्दिष्ट चरित्र स्थिति से शुरू होता है और एक निर्दिष्ट लंबाई है।

string sub = input.Substring(0, 1); 
string restStr = input.Substring(2, input.length-2); 
// string restStr = input.Substring(2); Can also use this instead of above line 
string madeStr = restStr + ";" + sub; 

आप एक स्ट्रिंग है एक निर्दिष्ट चरित्र की स्थिति में शुरू होता है और स्ट्रिंग के अंत से पहले समाप्त हो जाती है से सबस्ट्रिंग निकालने के लिए सबस्ट्रिंग विधि कॉल। प्रारंभिक वर्ण स्थिति शून्य-आधारित है; दूसरे शब्दों में, स्ट्रिंग में पहला अक्षर इंडेक्स 0 पर है, इंडेक्स नहीं 1. एक स्पेक्ट्रिंग निकालने के लिए जो एक निर्दिष्ट वर्ण स्थिति से शुरू होता है और स्ट्रिंग के अंत तक जारी रहता है, सबस्ट्रिंग विधि को कॉल करें।

+0

'input.Substring (2)' वही करता है - बिना लंबाई के - 2'। – i486

+0

हाँ कोड में टिप्पणी की गई लाइन देखें। जो मैंने लिखा है वह है –

4

यह सुनिश्चित नहीं है कि आप छोटे string संचालन के लिए क्या प्रदर्शन कर रहे हैं, आपका कोड अच्छी तरह से लिखा गया है और आपकी आवश्यकताओं को पूरा करता है।

एक छोटी सी चीज जिसे आप विचार कर सकते हैं इनपुट स्ट्रिंग पर अतिरिक्त विभाजन को हटा रहा है।

var subs = s.Split ("-"); 
String.Format ("{0};{1}", subs [1], subs [0]); 

यदि आप सिंगल लाइनर (पागल प्रोग्रामर) देख रहे हैं, तो इससे मदद मिल सकती है।

string.Join(";", s.Split('-').Reverse()) 
संबंधित मुद्दे