[英]most elegant way to remove string element
我從輸出文件中獲取字符串,該字符串將始終為Ok
或Err
。 之后我將這個結果Ok
或Err
為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.