如何从包含特定值 C# 的字符串中删除一行?

Jiale Xue - MSFT 37,946 信誉分 Microsoft 供应商
2024-03-18T07:09:58+00:00

我正在创建一个分析程序,可以非常快速地显示数据。这些数据中有很多只是噪声,因此我想做一个过滤函数。

使用 SerialPort.ReadExisting() 读取和显示数据;因此以“Clumps”形式返回。这意味着仅搜索 ID 并删除所有字符串是行不通的。

数据通过串行端口发送并显示为串行端口。

ID: 201, Data: 0 0 40 0 0 0 0 80
ID: 201, Data: 0 0 40 0 0 0 0 80
ID: 20F, Data: FF FF 27 10 40 0 FF 77
ID: 190, Data: 0 53 0 0 3C 1 0 3C
ID: 20F, Data: FF FF 27 10 40 0 FF 7D
ID: 280, Data: 0 9
ID: 201, Data: 0 0 40 0 0 0 0 80
ID: 231, Data: 1 6F 64 0 0 0 80
ID: 205, Data: 2 95 1 F5 3 F4 1 F5
ID: 201, Data: 0 0 40 0 0 0 0 80
ID: 4B0, Data: 27 10 27 10 27 10 27 10
ID: 20F, Data: FF FF 27 10 40 0 FF 98
ID: 20F, Data: FF FF 27 10 40 0 FF 9B
ID: 190, Data: 0 54 0 0 3C 1 0 3C
ID: 4B0, Data: 27 10 27 10 27 10 27 10
ID: 280, Data: 0 9
ID: 20F, Data: FF FF 27 10 40 0 FF AA
ID: 433, Data: 80 4 50 1 0 A0 0 0
ID: 20F, Data: FF FF 27 10 40 0 FF AF
ID: 280, Data: 0 9

数据是从 arduino 读取的。

我希望能够提交一个 ID 和要删除的整行。

我试过使用; 没有任何结果。

public string filterIDs(string dataIn) {
    foreach (var filterID in filteredIDs) dataIn = Regex.Replace(dataIn, @$"^ID: {Regex.Escape(filterID)},.*\n", "", RegexOptions.Multiline);
    return dataIn;
}

and

foreach (var filterID in filteredIDs)
{

    dataIn = Regex.Replace(dataIn,filterID, "", RegexOptions.Multiline);

}
return dataIn;

它只删除了身份证号码。

我使用过其他正则表达式值,但它们也不起作用,但这可能只是因为我缺乏该主题的经验。

filteredIDs 值保留为“ID: NUM”。

我是使用正则表达式的新手,所以任何帮助都会有用。

Note:此问题总结整理于: How can I remove a line from a string that includes a certain value C#?

C#
C#
一种面向对象的类型安全的编程语言,它起源于 C 语言系列,包括对面向组件的编程的支持。
145 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. Hui Liu-MSFT 44,471 信誉分 Microsoft 供应商
    2024-03-18T08:27:05.1633333+00:00

    你有没有考虑过另一种不使用正则表达式的方法?它可能更简单。

    请参考以下代码,使用 linq 删除包含特定值的行。

     static void Main(string[] args)  
            {  
                var result = filterIDs("201");  
            }  
            public static string filterIDs(string dataIn)   
            {  
                var filteredIDs = File.ReadAllLines("1.txt");  
                var notincluded = filteredIDs.Where(x => !x.Contains(dataIn));  
                string result=string.Join("\r", notincluded.ToArray());  
      
                return result;  
      
            }  
    

    注意:在这里我使用txt文件作为数据源,您可以根据自己的情况进行一些更改。

    测试结果:

    217203-image.png

    希望这对你有所帮助。 如果回复有帮助,请单击“接受答案”并投赞成票。

    注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。

    1 个人认为此答案很有帮助。
    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助