从动态数据c#中获取子字符串

Posted

技术标签:

【中文标题】从动态数据c#中获取子字符串【英文标题】:Get substring from dynamic data c# 【发布时间】:2022-01-08 18:18:20 【问题描述】:

我正在使用 DataReceivedEventArgs 事件在控制台上不断更改数据。现在我只需要提取 Total 的 int 值。为此我正在使用字符串函数Substring()

我使用如下:

e.Data.Substring(7, e.Data.IndexOf("f"));

因为总和 fps 在增加时不断变化,所以我开始丢失数字。

请帮助使其动态化,因此无论总和 fps 之间的值是什么,我都想得到它

以下是数据样本 Total= 1082 fps= 21 q=29.0 size= 6144kB time=00:00:36.33

【问题讨论】:

见正则表达式...... dotnetfiddle.net/UB14pC 【参考方案1】:

有多种方法可以做到这一点,从简单到更难,最容易使用IndexOf("Total=")IndexOf("fps"),比如

Console.WriteLine(e.Data.Substring(e.Data.IndexOf("Total="), e.Data.IndexOf("fps")));

Demo

但如果Totalfps 等的顺序发生变化,这将中断,因此您可以使用 RegEx,例如

var input = "Total= 1082 fps= 21 q=29.0 size=    6144kB time=00:00:36.33";
var regexString = @"Total=(\s)*[0-9]+";
var regex = new Regex(regexString);
var match = regex.Match(input);
Console.WriteLine(match);

Demo

您还可以构建一个解析器并将数据解析为一个对象,但这超出了此答案的范围。


PS 如果您可以更改生成此事件和数据的源代码,您可能需要考虑不在应用程序的各个部分之间传递字符串,而是传递对象并格式化这些对象以用于控制台(或任何其他)演示

【讨论】:

它正在工作,但它也添加了 total= 我不想得到这个。我只需要数字

以上是关于从动态数据c#中获取子字符串的主要内容,如果未能解决你的问题,请参考以下文章

wepy父组件onload中请求数据,更新.sync动态传值绑定的数据,子组件onload中获取不到值。

wepy父组件onload中请求数据,更新.sync动态传值绑定的数据,子组件onload中获取不到值。

Vue子组件中 data 从props中动态更新数据

使用 C# 在 html 文档中抓取由 JavaScript 动态生成的数据

Vuejs将动态数据从父组件传递给子组件

如何使用用户名和传递以及 SSIS 中的动态令牌从 API 获取数据