簡體   English   中英

最優雅的方法是刪除字符串元素

[英]most elegant way to remove string element

我從輸出文件中獲取字符串,該字符串將始終為OkErr 之后我將這個結果OkErr為Enum屬性,這沒關系,一切正常,但我確信必須有比我更好的方法。

因為我提取了3個字符,以便取出Ok ,我需要從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";
 }

謝謝

你可以使用String.Trim()來刪除';' 如果它在那里。

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

結果:

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

你可以這樣做:

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);
     Enum message = Enum.Err;
     if (Regex.Match(File.ReadAllText(@"C:\Temp\SomeReport.txt"), "(ok.+?){3}", RegexOptions.Singleline).Success)
     {
        message = Enum.OK;
     }

如果你有以下枚舉

public enum State
{
    Err, OK
}

使用修剪,因為sa_adam213說你可以用這種方式將它轉換為你的枚舉:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM