2012-10-23 12 views
20

सी # में: यदि मैं इस तरह का संदेश बनाना चाहता हूं: "हाय हमारे पास ये उड़ानें हैं: फ्लाइट ए, बी, सी, डी आप कौन सा करते हैं चाहते हैं "स्ट्रिंग के बीच में परिवर्तनीय मान डालें

जहां बोल्ड में केवल अनुभाग गतिशील है और मैं रन टाइम पर अपना मान पास करता हूं, लेकिन इसके बाएं और दाएं हिस्से निश्चित हैं। मैं इसे बनाने के लिए LeftMessage + वेरिएबल्स + राइट मैसेज जैसे कुछ बना सकता हूं। लेकिन मैं सोच रहा था कि क्या दो अलग-अलग बाएं और दाएं संदेश बनाने की आवश्यकता के बिना इसे एक साथ करने का कोई तरीका है?

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

+0

हाँ String.Join देखो() विधि उदाहरण String.Join (',', someVariable) या String.Format ("संदेश {0}। और के आराम के लिए निम्नलिखित परम काउंटर (रों) का उपयोग टेक्स्ट पैराम्स {1} {2} {3}, आदि – MethodMan

+0

कृपया ध्यान दें कि भाषाएं बदलती हैं, और वर्तमान में स्वीकृत उत्तर अब सबसे अच्छा नहीं है। उदाहरण के लिए http://stackoverflow.com/a/32512833/1856015 देखें स्ट्रिंग प्रक्षेप का उपयोग कर। –

उत्तर

24

आप string.Format उपयोग कर सकते हैं:

string template = "Hi We have these flights for you: {0}. Which one do you want"; 
string data = "A, B, C, D" 
string message = string.Format(template, data); 

आप अपने संसाधन फ़ाइल से template लोड करना चाहिए और data अपने रनटाइम मान है।

सावधान रहें यदि आप कई भाषाओं में अनुवाद कर रहे हैं, हालांकि: कुछ मामलों में, आपको विभिन्न भाषाओं में विभिन्न टोकन ({0}) की आवश्यकता होगी।

+1

मैं इस जवाब को @Paolo द्वारा पसंद करता हूं। देखते हैं कि कौन जीतता है। :) – Neolisk

+1

अनुवाद में टोकन के बारे में अच्छी कॉल। – DarkNightFan

+2

@ डार्क नाइटफ़ान: कड़वा अनुभव से :-) जब आप इस तरह के तारों को दाएं से बाएं भाषाओं के लिए अनुवाद करते हैं, तो आप प्रोग्रामिंग नरक के सातवें चक्र तक पहुंच गए हैं ... –

2

1 आप

var sample = "testtesttesttest#replace#testtesttest"; 
var result = sample.Replace("#replace#", yourValue); 

2 तुम भी string.Format

var result = string.Format("your right part {0} Your left Part", yourValue); 
उपयोग कर सकते हैं

3 आप Regex वर्ग का उपयोग कर सकते string.Replace विधि का उपयोग कर सकते हैं

11
String.Format("Hi We have these flights for you: {0}. Which one do you want", 
           flights); 

संपादित करें: तुम भी बचा सकता है "टेम्पलेट" स्ट्रिंग अलग से (उदाहरण के लिए आप कर सकते हैं एक विन्यास फाइल में संग्रहित है और वहाँ से इसे पुनः प्राप्त), इस तरह:

string flights = "Flight A, B,C,D"; 

string template = @"Hi We have these flights for you: {0}. Which one do you want"; 
Console.WriteLine(String.Format(template, flights)); 

EDIT2: ओह, माफ करना मैं देख रहा हूँ @DanPuzey पहले से ही बहुत है लेकिन मेरे संपादित करने के लिए इसी तरह की (कुछ बेहतर कुछ)

16
का सुझाव दिया था कि

उपयोग String.Format

पूर्व सी # 6,0

string data = "FlightA, B,C,D"; 
var str = String.Format("Hi We have these flights for you: {0}. Which one do you want?", data); 

सी # 6.0 - String Interpolation

string data = "FlightA, B,C,D"; 
var str = $"Hi We have these flights for you: {data}. Which one do you want?"; 

http://www.informit.com/articles/article.aspx?p=2422807

+0

कोई अच्छा साइट है कि मैं सभी तरह के नए सुधारों? – MonsterMMORPG

+0

मेरी कोड उपकरण (ReSharper) पढ़ सकते हैं एक दूसरे को पहला रूप से एक स्वत: सुधार का सुझाव है, यह दर्शाता है कि कि (डिफ़ॉल्ट रूप से) है पसंदीदा वाक्य रचना कर रहे हैं। –

34

अब (सी # 6, विजुअल स्टूडियो 2015) ऐसा करने का एक और संक्षिप्त तरीका है: स्ट्रिंग इंटरपोलेशन।

another question's answer से

:

सी # 6 में आप string interpolation उपयोग कर सकते हैं:

string name = "John"; 
string result = $"Hello {name}"; 

वाक्य रचना दृश्य स्टूडियो में इस बात के लिए पर प्रकाश डाला यह अत्यधिक पठनीय बनाता है और टोकन के सभी जाँच कर रहे हैं।

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