c# - 如何从 C# 中的字符串中提取非常特定的部分并在 winform 应用程序中使用它们?
问题描述
我有数据通过串口输入。目前,我正在接收它并在每个“,”处拆分它(参见代码以供参考)。现在,我正在使用(for each)函数,它使遇到的每个逗号都产生子字符串@。但我不想要这个。
可以说,我需要的是从 String1 中仅提取 ALPHA、BRAVO 和 CHARLIE,如果数据丢失,如 String2 中所示,我的提取也应该导致空子字符串。
问题是这些数据来自 GPS 设备,如果信号强度不好,则字符串为空,即只有逗号。因此,字符串长度可以轻微或剧烈变化(String1 表示完整的字符串,而 String2 表示有遗漏的字符串)。
字符串 1:$GPBWC,220516,ALPHA,00046.34,BRAVO,T,CHARLIE,0004.6,N,EGLM*11
字符串2:$GPBWC,,,0,BRAVO,,,,N,EGLM*11
我了解之前已经提出了一些相关问题,但我无法找到足够强大的解决方案。因此,我们将不胜感激任何和所有的帮助。
代码:
private string serialRx = string.Empty;
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
serialRx += serialPort1.ReadExisting();
string[] lines = serialRx.Split(new char[] { '$' },
StringSplitOptions.None);
for (int i = 0; i < lines.Length - 1; i++)
{
if (lines[i].StartsWith("GPGSV"))
{
string[] values = lines[i].Split(new char[] { ',' });
foreach (var value in values)
{
Invoke(new Action(() => displaySplits(value)));
}
Invoke(new Action(() => displayReceivedText(lines[i])));
}
}
}
解决方案
推荐阅读
- nestjs - Netstjs - 具有用户访问权限的多个全局守卫
- python - 如何在 Python 中向生成器循环添加条件?
- gitlab - 从 gitlab-ci dir 中获取所有工件并使其成为工件
- r - 按行名过滤 2 个表
- typescript - 打字稿中有没有办法只允许除不返回布尔值的函数以外的任何东西?
- python - 用python解析站点部分的所有页面
- python - 防止 tkinter 窗口在允许其扩展的同时收缩?
- skiasharp - SkiaSharp - 改变伽玛值
- javascript - 角度中的异步问题,所有订阅完成后如何获得最终结果?
- c# - 从 Axios 调用 .Net WebAPI 时出现 CORS 错误