2013-03-05 7 views
8

मैं एक असली नौसिखिया हूं और जब मुझे एक प्रश्न मिला और काफी समान जवाब मिला (Winforms C# change string text order) मुझे अभी भी इसके साथ कुछ मदद की ज़रूरत है, खासकर नीचे बिंदु 3 के कारण जो इसे थोड़ा और मुश्किल बनाता है।स्ट्रिंग में शब्दों का क्रम कैसे बदलें?

  1. स्ट्रिंग 3 'शब्द' से बना है जिसके क्रम को बदलने की जरूरत है। स्ट्रिंग में हमेशा एक ही पैटर्न होता है: "वर्डऑन वर्डवोवो वर्ड थ्री" - कुछ उदाहरण "कार स्टोरेज सिडनी", "नाव स्टोरेज मेलबर्न" और "कारवां स्टोरेज ब्रिस्बेन" हैं।

  2. प्रत्येक 'शब्द' हमेशा एक ही स्थान से अलग होता है। जैसा कि मैं समझता हूं कि इसका उपयोग वैरिएबल अप को विभाजित करने के लिए किया जाएगा और फिर वांछित ऑर्डर चेंज प्राप्त करने के लिए इसे फिर से स्वरूपित किया जा सकता है (नीचे देखें 4)

  3. यह वह जगह है जहां यह थोड़ा मुश्किल हो जाता है: तीसरा 'शब्द' कभी-कभी वास्तव में दो शब्द होते हैं, यानी "वर्ड थ्री" के बजाय "वर्ड थ्री" शायद बेहतर उदाहरण के साथ समझाया गया है: "नाव भंडारण गोल्ड कोस्ट"

  4. वांछित क्रम परिवर्तन "वर्ड थ्री वर्डऑन वर्डटवो" (मूल रूप से, बस चल रहा है " वर्ड थ्री "पीछे से आगे तक) इसलिए उपर्युक्त 1 उदाहरणों के समान उदाहरणों का उपयोग करके, समाप्त परिणाम" सिडनी कार स्टोरेज "," मेलबर्न नाव संग्रहण "और" ब्रिस्बेन कारवां स्टोरेज "होगा। और मुश्किल से एक है, कभी-कभी दो शब्दों "वर्ड तीन" के आधार पर के रूप में ऊपर 3. में दिखाया गया है, "गोल्ड कोस्ट नाव संग्रहण"

होगा मुझे आशा है कि मैं इसे काफी अच्छी तरह से समझा दिया है।

मुद्दे को छोड़कर ऊपर 3. में वर्णित है, मेरा मानना ​​है कि यह कोड पर कुछ इस तरह, सिर्फ अपनी किसी न किसी तरह नौसिखिया प्रयास किया जाना चाहिए: मुझे लगता है कि यह बहुत करीब है

string wordsBefore = "WordOne WordTwo WordThree"; 
string[] wordsWorking = wordsBefore.Split(new string[]{" "}); 
string wordsAfter = ("{0} {1} {2}", wordsWorking[2], wordsWorking[0], wordsWorking[1]); 

?

लेकिन निश्चित रूप से, उपर्युक्त 3 में वर्णित समस्या के कारण, "वर्ड थ्री" में दो शब्द होते हैं और किसी भी तरह उन्हें एक शब्द के रूप में संभालने के लिए अतिरिक्त कोड होने की आवश्यकता होती है। मुझे लगता है तुम्हे पता है मैं क्या कहना चाहता हूँ!

उत्सुकतापूर्वक कुछ सहायता का इंतजार!

+0

[स्टैक क्लास] (http://msdn.microsoft.com/en-us/library/system.collections.stack.aspx) पर एक नज़र डालें। – Brian

+0

@ ब्रायन ओपी के चौथे बिंदु पर विचार करते हुए मुझे नहीं लगता कि स्टैक मदद करेगा। – Star

+0

"फू बार बाज" तीन शब्द और "फू बार बाज क्यूक्स" क्यों है?यदि आप इसे समझा सकते हैं, तो आप इसे हल कर सकते हैं। यदि आपके समूहीकृत शब्दों में कुछ समान है, तो आप इसके लिए एक चेक जोड़ सकते हैं। उदाहरण के लिए शब्द संयोजन की एक निश्चित सूची। लेकिन अगर आउटपुट 1 को हमेशा इनपुट 3 (और आगे) होने की आवश्यकता होती है, तो इसे क्रैक करना बहुत कठिन नहीं होता है। – CodeCaster

उत्तर

5

आप केवल करने के लिए Split बता सकते हैं आप परिणामों की एक निश्चित संख्या दे:

string wordsBefore = "WordOne WordTwo Word Three"; 
string[] wordsWorking = wordsBefore.Split(new [] {' '}, 3); 
string wordsAfter = string.Format("{0} {1} {2}", 
       wordsWorking[2], wordsWorking[0], wordsWorking[1]); 

// result: "Word Three WordOne WordTwo" 

या आप String.Format साथ चालाक होना चाहते हैं:

string wordsBefore = "WordOne WordTwo Word Three"; 
string[] wordsWorking = wordsBefore.Split(new [] {' '}, 3); 
string wordsAfter = string.Format("{2} {0} {1}", wordsWorking); 
+0

धन्यवाद डी स्टेनली, यह काम करता है (दूसरा एक): 'स्ट्रिंग शब्द इससे पहले = "वर्डऑन वर्ड दो शब्द तीन"; स्ट्रिंग [] शब्द वर्किंग = शब्द इससे पहले .plit (नया [] {''}, 3); स्ट्रिंग शब्दएफ़टर = string.Format ("{2} {0} {1}", शब्द वर्किंग); ' –

4
string wordsBefore = "WordOne WordTwo WordThree"; 
string[] wordsWorking = wordsBefore.Split(); 
string wordsAfter = ("{0} {1} {2}", string.Join(" ", wordsWorking.Skip(2)), wordsWorking[0], wordsWorking[1]); 
+0

क्षमा करें ऑस्टिन, यह काम नहीं किया। मैंने इसे लाइव साइट पर अपने वास्तविक कोड के साथ करने की कोशिश की और एक त्रुटि मिली। क्षमा करें मैं समझाने के लिए पर्याप्त उन्नत नहीं हूं कि त्रुटि क्या थी ... @ डी-स्टेनली के जवाब ने हालांकि काम किया था। –

0
const string wordsBefore = "WordOne WordTwo Word Three"; 
string[] wordsWorking = wordsBefore.Split(); 
var thirdWord = wordsWorking.Skip(2).Aggregate((s, s1) => s + " " + s1);  
string wordsAfter = string.Format("{0} {1} {2}", thirdWord, wordsWorking[0], wordsWorking[1]); 
+0

धन्यवाद पेट्रुति, आपके उत्तर की सराहना करते हैं हालांकि मैंने इसका परीक्षण नहीं किया क्योंकि मैं उपरोक्त @ डी स्टेनली से संतुष्ट हूं, लेकिन वैसे भी धन्यवाद। वाह, यह साइट अद्भुत है, वहां बहुत समर्थन है! –

2

यह सरल रखें।

string wordsBefore = "WordOne WordTwo WordThree"; 
string[] wordsWorking = wordsBefore.Split(new string[]{" "}); 
string word1 = wordsWorking[0]; 
string word2 = wordsWorking[1]; 
string word3 = wordsWorking[2]; 

if (wordsWorking.length == 4) 
    word3 = word3 + " " + wordsWorking[3]; 

string wordsAfter = ("{0} {1} {2}", word3 word1, word2); 
+0

धन्यवाद हेनक, यह शानदार लग रहा है और सरल दृष्टिकोण प्रोग्रामिंग की समझ के अपने बुनियादी स्तर के लिए विशेष रूप से अच्छा है। इस मामले में हालांकि मैंने पहले ही @ डी स्टेनली के जवाब का परीक्षण किया था जो पूरी तरह से काम करता है इसलिए मैं इसके साथ दौड़ूंगा। मुझे यकीन है कि यह पूरी तरह से काम करेगा। –

0

यहाँ मेरी उदाहरण है:

string text = "word one<splittag>word two and some other words<splittag>word three with some text"; 
     string[] words = text.Split(new string[] { "<splittag>" }, StringSplitOptions.None); 
     Label1.Text = String.Format("{2},{0},{1}", words[2], words[0], words[1]); 

उम्मीद है कि यह मदद करता है!

+0

वाह धन्यवाद। मुझे यह भी कोशिश नहीं हुई क्योंकि @ डी स्टेनली के जवाब ने मेरे लिए पूरी तरह से काम किया, लेकिन वैसे भी धन्यवाद –

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