c# - 从 C# 中的文本文件中读取自定义文本数据
问题描述
我在文本文件中有以下数据。我需要读取每个应用程序名称的服务实例名称、机器名称及其对应的状态。我在C#中的asp.net控制台应用程序中编码。任何帮助表示赞赏。我其实很震惊。
----- data.txt 文件数据 ---- 应用程序名称:push 服务名称:PushEvent.par 部署状态:成功 服务实例名称:PushEve_PA 机器名称:machine1 状态:正在运行 服务实例名称:PushEve_PA-1 机器名称: machine2 状态:备用应用程序名称:pull 服务名称:Invoke.par 部署状态:已禁用 服务实例名称:Invo_PA 部署状态:已禁用 机器名称:machine3 状态:未知 服务实例名称:Invo_PA-1 部署状态:已禁用 机器名称:machine4 状态: 未知
解决方案
尝试以下方法:
static void Main(string[] args)
{
Console.WriteLine("Application Name Service Instance Name Machine Name Status");
string data = File.ReadAllText(@"Path\Data.txt");
var appArray = data.Split("Application ",StringSplitOptions.RemoveEmptyEntries);
foreach (var app in appArray)
{
var appName = PullValue(app,"Name");
var serviceArray = app.Split("Service Instance ", StringSplitOptions.RemoveEmptyEntries);
var services = serviceArray.Skip(1).ToArray();
foreach(var item in services)
{
var serviceInstanceName = PullValue(item, "Name");
var machineName = PullValue(item, "Machine Name");
var status = PullValue(item, "Status");
Console.WriteLine(" {0} {1} {2} {3}",appName, serviceInstanceName, machineName, status);
}
}
}
private static string PullValue(string line, string key)
{
key = key + ": ";
int ndx = line.IndexOf(key, 0, StringComparison.InvariantCultureIgnoreCase);
if (ndx >= 0)
{
var i=line.IndexOf(" ");
int ndx2 = line.IndexOf(" ", ndx+key.Length+1, StringComparison.InvariantCultureIgnoreCase);
if (ndx2 == -1)
ndx2 = line.Length - 1;
return line.Substring(ndx + key.Length, ndx2 - ndx - key.Length).Trim();
}
return "";
}
结果:
推荐阅读
- python - 如何在 Pandas 数据框中为对称关系分配负值
- pca - vst() 和assay(vst()) 之间的真正区别是什么?
- python - 从 PyCharm 转移到 VSCode 后无法导入 Python 模块
- reactjs - 使用 React 测试库测试文档侦听器
- async-await - 如何使用来自不同图形 api 调用的响应创建和返回对象
- python - 防止“除以零错误”的方法
- javascript - 如何从Javascript中的对象获取所有键名
- c# - Swashbuckle 可以为包含对象集合的表单生成正确的 OpenAPI 定义吗?
- java - 请解释这个 JAVA 程序的意外输出
- quantlib - Quantlib FixedRateBond 现金流