获取字符串的一部分 - C# .NET Core 3.1
Get parts of a string - C# .NET Core 3.1
我有一个来自日志的字符串行:
2020-09-07 14:41:17.268 +01:00 [Information] Hello, Serilog!
我想从 string
中提取单词 Information
,但是,这会发生变化,因为它可能是 debug
,或任何其他已知的日志记录级别。
我也想要消息,它是 ]
之后的一个 space,在本例中是 Hello, Serilog!
。这也可能会发生变化,但不会比现有消息长。
字符串来自 StringReader
using (StringReader reader = new StringReader(message.ToString())) // message from StringWriter
{
var readText = reader.ReadLine();
Console.WriteLine(readText);
}
最好的方法是什么?
您可以使用正则表达式如下:
var regex = new Regex("\[([^\]]+)\]");
var match = regex.Match(readText);
if (match.Success)
{
var value = match.Groups[1].Value;
// value == "Information" or whatever between [ and ]
}
else
{
// Handle pattern not matching
}
使用 Regex 将输出 Information: Hello, Serilog!
string type;
string message;
string text = "2020-09-07 14:41:17.268 +01:00 [Information] Hello, Serilog!";
string pattern = "\[(.*?)\]";
var match = Regex.Match(text, pattern);
if (match.Success)
{
type = match.Groups[1].Value;
message = text.Substring(match.Groups[1].Index + match.Groups[1].Length + 1);
Console.WriteLine(type + ": " + message);
}
我有一个来自日志的字符串行:
2020-09-07 14:41:17.268 +01:00 [Information] Hello, Serilog!
我想从 string
中提取单词 Information
,但是,这会发生变化,因为它可能是 debug
,或任何其他已知的日志记录级别。
我也想要消息,它是 ]
之后的一个 space,在本例中是 Hello, Serilog!
。这也可能会发生变化,但不会比现有消息长。
字符串来自 StringReader
using (StringReader reader = new StringReader(message.ToString())) // message from StringWriter
{
var readText = reader.ReadLine();
Console.WriteLine(readText);
}
最好的方法是什么?
您可以使用正则表达式如下:
var regex = new Regex("\[([^\]]+)\]");
var match = regex.Match(readText);
if (match.Success)
{
var value = match.Groups[1].Value;
// value == "Information" or whatever between [ and ]
}
else
{
// Handle pattern not matching
}
使用 Regex 将输出 Information: Hello, Serilog!
string type;
string message;
string text = "2020-09-07 14:41:17.268 +01:00 [Information] Hello, Serilog!";
string pattern = "\[(.*?)\]";
var match = Regex.Match(text, pattern);
if (match.Success)
{
type = match.Groups[1].Value;
message = text.Substring(match.Groups[1].Index + match.Groups[1].Length + 1);
Console.WriteLine(type + ": " + message);
}