2009-10-02 10 views
8

संभव डुप्लिकेट:
Parsing formatted string.स्ट्रिंग के विपरीत। फोर्मेट?

मैं एक String.Format प्रारूप का उपयोग कैसे करें और उसके आदानों के लिए अपने उत्पादन बदल सकता है?

उदाहरण के लिए:

string formatString = "My name is {0}. I have {1} cow(s)."; 

string s = String.Format(formatString, "strager", 2); 

// Call the magic method... 
ICollection<string> parts = String.ReverseFormat(formatString, s); 
// parts now contains "strager" and "2". 

मैं जानता हूँ कि मैं यह करने के रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं, लेकिन इतना मैं बजाय केवल कोड दो में से एक लाइन बनाए रखने की जरूरत मैं एक ही प्रारूप स्ट्रिंग का उपयोग करना चाहते हैं।

+0

शिकार: http://stackoverflow.com/qu यहाँ किसी से कुछ कोड सी # में एक scanf बराबर का प्रयास कर रहा है अनुमान/1410012/पार्सिंग-स्वरूपित-स्ट्रिंग –

+0

मेरा बुरा; मुझे नहीं पता था कि यह एक डुप्ली था। धन्यवाद मेहदाद, मैं अभी बंद करने के लिए मतदान कर रहा हूँ। –

+0

यह एक डुप्ली है, लेकिन मेरे प्रश्न का उत्तर नहीं दिया गया था। – strager

उत्तर

0

मुझे विश्वास नहीं है कि इसका समर्थन करने के लिए कुछ भी बॉक्स में है, लेकिन सी # में, आप सीधे params -मार्क किए गए सरणी पैरामीटर जैसे String.Format() लेते हुए किसी भी विधि पर ऑब्जेक्ट्स की सरणी पास कर सकते हैं। इसके अलावा, मुझे विश्वास नहीं है कि C# & .NET Framework के लिए कुछ तरीका है यह जानने के लिए कि स्ट्रिंग एक्स को जादू प्रारूप स्ट्रिंग वाई से बनाया गया था और विलय को पूर्ववत किया गया था।

इसलिए, केवल एक चीज मैं के बारे में सोच सकते हैं कि आप thusly अपने कोड को स्वरूपित कर सकता है:

object[] parts = {"strager", 2}; 
string s = String.Format(formatString, parts); 

// Later on use parts, converting each member .ToString() 
foreach (object p in parts) 
{ 
    Console.WriteLine(p.ToString()); 
} 

आदर्श नहीं है, और शायद काफी नहीं क्या आप के लिए देख रहे हैं, लेकिन मुझे लगता है कि यह एक ही रास्ता है ।

0

आपको इसे स्वयं लागू करना होगा, क्योंकि आपके लिए ऐसा करने के लिए कुछ भी नहीं बनाया गया है।

अंत में, मेरा सुझाव है कि आपको .NET string.format implmentation (वास्तव में, प्रासंगिक कोड StringBuilder.AppendFormat() में) के लिए वास्तविक स्रोत कोड प्राप्त करें। यह स्वतंत्र रूप से उपलब्ध है, और स्ट्रिंग को एक बहुत ही कुशल तरीके से चलने के लिए यह एक राज्य मशीन का उपयोग करता है। आप उस कोड की नकल कर सकते हैं ताकि आपकी स्वरूपित स्ट्रिंग भी चल सके और उस डेटा को निकाला जा सके।

ध्यान दें कि पीछे की तरफ जाना हमेशा संभव नहीं होगा। कभी-कभी स्वरूपित स्ट्रिंग में वर्ण विनिर्देशकों के मिलान वाले पात्र हो सकते हैं, जिससे प्रोग्राम को यह पता लगाना असंभव हो जाता है कि मूल क्या दिखता है। जैसा कि मैं इसके बारे में सोचता हूं, आपको मूल स्ट्रिंग को नियमित अभिव्यक्ति में बदलने के लिए बेहतर भाग्य हो सकता है, और उसके बाद मैच करने के लिए इसका उपयोग करें।

मैं भी InvertFormat() करने के लिए अपने विधि का नाम बदलने की सलाह देते हैं क्योंकि ReverseFormat लगता है कि आप इस उत्पादन उम्मीद थी चाहते हैं:।

) s (WOC 2 evah .regarts सी एमन YM

+0

के लिए स्ट्रिंग्स और% d के लिए% s का उपयोग करते हैं, यह कार्यान्वयन "नि: शुल्क बीयर" मुक्त है या "यदि आपने कभी भी वास्तविक कोड में इसका उपयोग करने का प्रयास किया है तो मैं इस ग्रह से अपने गधे को मुफ्त में मुकदमा दूंगा" मुफ़्त? –

+0

मुफ्त बियर, लेकिन चूंकि आप इसे कुछ नया बनाने के लिए काफी संशोधित करेंगे, तो आपको सुरक्षित होना चाहिए। –

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