2012-12-22 13 views
6

मैं आउटपुट फ़ाइल से स्ट्रिंग ला रहा हूं जो हमेशा Ok या Err होगा। इसके बाद मैं इस परिणाम को Ok या Err एनम संपत्ति में कास्टिंग कर रहा हूं, ठीक है, सब कुछ काम करता है, लेकिन मुझे यकीन है कि मेरे से बेहतर तरीका होना चाहिए।स्ट्रिंग तत्व को हटाने के लिए सबसे शानदार तरीका

चूंकि मैं Ok के मामले में 3 वर्ण ला रहा हूं, इसलिए मुझे Ok से तीसरे तत्व को हटाने की आवश्यकता है; परिणाम।

string message = File.ReadAllText(@"C:\Temp\SomeReport.txt").Substring(411, 3); 
if (message == "Ok;") // `;` character should be removed in case that Ok is fetched 
{ 
    message = "Ok"; 
} 

धन्यवाद

+0

आप तो स्ट्रिंग के लिए सटीक स्थिति 411 की अपेक्षा करें, आप केवल 'ओके' के लिए जांच सकते हैं: 'File.ReadAllText (@ "C: \ Temp \ SomeReport.txt")। सबस्ट्रिंग (411, 2); '। अगर संदेश कुछ और है लेकिन 'ठीक है', तो शायद यह एक त्रुटि है। समझ में आता है? –

+0

मैं या तो ओके या एरर परिणाम की उम्मीद कर रहा हूं। इस तरह मैं सबस्ट्रिंग (411, 3) का उपयोग करता हूं; 'Enum.TryParse' का उपयोग करने के लिए – user1765862

उत्तर

3

तुम बस String.Trim() इस्तेमाल कर सकते हैं दूर करने के लिए ';' अगर वहां है।

string message = File.ReadAllText(@"C:\Temp\SomeReport.txt").Substring(411, 3).TrimEnd(';') 

परिणाम:

"Err" = "Err" 
"Ok;" = "Ok" 
1

तुम बस ऐसा कर सकते हैं:

switch (message) 
{ 
    case "Err": 
    SomeProperty = EnumName.Err; 
    break; 

    case "Ok;": 
    SomeProperty = EnumName.Ok; 
    break; 

    default: 
    throw new Exception("Unexpected file contents: " + message); 
} 

आप नहीं है कि तरह, आप अर्धविराम ट्रिमिंग के बाद TryParse उपयोग कर सकते हैं करते हैं:

EnumName result; 
if (Enum.TryParse(message.TrimEnd(';'), out result)) 
    SomePropery = result; 
else 
    throw new Exception("Unexpected file contents: " + message); 
+0

+1 – Ria

0

यदि आपके पास follo है विंग enum

public enum State 
{ 
    Err, OK 
} 

ट्रिमिंग का उपयोग कर, के रूप में sa_adam213 कहा आप इसे अपने enum करने के लिए इस तरह से परिवर्तित कर सकते हैं:

string message = File.ReadAllText(@"C:\Temp\SomeReport.txt").Substring(411, 3).TrimEnd(';') 
State state = (State)Enum.Parse(typeof(State),message); 
MessageBox.Show(state.ToString()); //should show OK or Err 

और यह भी डाली int करने के लिए:

int i = (int)state; 
MessageBox.Show(i.ToString()); //should show 1 or 0 
1
 Enum message = Enum.Err; 
    if (Regex.Match(File.ReadAllText(@"C:\Temp\SomeReport.txt"), "(ok.+?){3}", RegexOptions.Singleline).Success) 
    { 
     message = Enum.OK; 
    } 
संबंधित मुद्दे

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