gpt4 book ai didi

c# - 如何从 lineX 读取到 lineY C#

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:36 25 4
gpt4 key购买 nike

我正在尝试解析一个 .log 文件并得到了它的一部分,如下所示:

2014-03-31 13:20:42,046 DEBUG 4B414D00000001184917.GetConventionalDataTask - GetCompressedLogResponse received: GetCompressedLogResponse: Id = GetCompressedLog, LoggerType = LoadProfileLogger, NumberOfRegisters = 5, NewLogId = 3281, Info = HeadOfLoggerIncluded

LogID RealTimeClock Logger_Status Logger_Data_Quality EnergyA14 EnergyA23
[KamDateTimeStatus] [NoUnit] [NoUnit] [kWh] [kWh]
------ ---------------------- ------------- ------------------- --------- ---------
3264 02 2014-03-31T08:00:00 0000 00000000 0.17 0.00
3265 02 2014-03-31T08:15:00 0000 00000000 0.17 0.00
3266 02 2014-03-31T08:30:00 0000 00000000 0.17 0.00
3267 02 2014-03-31T08:45:00 0000 00000000 0.17 0.00

2014-03-31 13:20:42,049 DEBUG 4B414D00000001184917.GetConventionalDataTask - Updated timestamp for logger LoadProfileLogger with time 31-03-2014 12:20:42

我如何获取 2 条 GetConventionalDataTask 行之间的行,以便程序知道开始读取从包含 (GetCompressedLogResponse received:) 的行到包含 (Updated timestamp for logger) 的行?

这是我能走多远:

public static bool IsLoggerStart(string text)
{
return text.Contains("GetCompressedLogResponse received:");
}
public static bool IsLoggerEnd(string text)
{
return text.Contains("Updated timestamp for logger");
}
public static string GetLoggerType(string text)
{
return GetSubStrings(text, "LoggerType = ", ", ").FirstOrDefault();
}
public static string GetNumberOfRegisters(string text)
{
return GetSubStrings(text, "NumberOfRegisters = ", ", ").FirstOrDefault();
}
public static string GetNewLogId(string text)
{
return GetSubStrings(text, "NewLogId = ", ", ").FirstOrDefault();
}

以及我创建的对象:

class CompressedLogResponse
{
public LoggerAnnounce LoggerAnnounce { get; set; }
public List<int> LogID { get; set; }
public List<DateTime> RealTimeClock { get; set; }
public List<int> LoggerStatus { get; set; }
public List<int> LoggerDataQuality { get; set; }
public List<double> EnergyA14 { get; set; }
public List<double> EnergyA23 { get; set; }
}
class LoggerAnnounce
{
public string LoggerType { get; set; }
public int NumberOfRegisters { get; set; }
public int NewLogId { get; set; }

}

感谢您提供的任何帮助:)

最佳答案

您可以使用正则表达式获取 2 GetConventionalDataTask 之间的文本

string input = File.ReadAllText("C:/log.txt");
Match m = Regex.Match(input, @"GetConventionalDataTask\s-\s(.*).GetConventionalDataTask", RegexOptions.Singleline);
Console.WriteLine(m.Groups[1]);

关于c# - 如何从 lineX 读取到 lineY C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26422950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com