C# 删除字符串元素的最优雅方法
我正在从输出文件中提取字符串,该字符串将始终为C# 删除字符串元素的最优雅方法,c#,string,C#,String,我正在从输出文件中提取字符串,该字符串将始终为Ok或Err。 之后,我将这个结果Ok或Err转换为Enum属性,这很好,一切都正常,但我确信一定有比我更好的方法 由于我在提取Ok时提取了3个字符,因此我需要从Ok中删除第三个元素;结果 string message = File.ReadAllText(@"C:\Temp\SomeReport.txt").Substring(411, 3); if (message == "Ok;") // `;` character should be re
Ok
或Err
。
之后,我将这个结果Ok
或Err
转换为Enum属性,这很好,一切都正常,但我确信一定有比我更好的方法
由于我在提取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";
}
谢谢您可以使用
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);
如果您有以下枚举
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
如果需要字符串的精确位置411,则只能检查
Ok
:File.ReadAllText(@“C:\Temp\SomeReport.txt”).Substring(411,2)代码>。如果消息不是Ok
,则可能是错误。有意义吗?我期待的结果不是Ok就是Err。这就是我使用子字符串(411,3)的方式;
Enum message = Enum.Err;
if (Regex.Match(File.ReadAllText(@"C:\Temp\SomeReport.txt"), "(ok.+?){3}", RegexOptions.Singleline).Success)
{
message = Enum.OK;
}