如何从文本文件中读取和分析特定的整数值,并将其添加到 c# 中的列表框中

本文关键字:添加 列表 整数 文件 文本 读取 | 更新日期: 2023-09-27 17:57:00

我想知道如何从文本文件中读取和解析特定的整数值,并将其添加到 C# 中的 Listbox。例如,我有一个文本文件MyText.txt如下所示:

<>
101
192
-
399
~
99
128
-
366
~
101
192
-
403
~

我想解析"-"和"~"之间的整数值,并将其中的每一个添加到列表框中的项目,例如:

#listBox1
399
366
403

请注意,每行值由回车符和换行符分隔。顺便说一下,它是通过RS-232串行通信从微控制器传输的数据。抱歉,我只是 c# 编程新手。提前谢谢。

如何从文本文件中读取和分析特定的整数值,并将其添加到 c# 中的列表框中

下面是使用 LINQ 执行此操作的一种方法:

        bool keep = false;
        listBox1.Items.AddRange(
            File.ReadLines("MyText.txt")
            .Where(l =>
            {
                if (l == "-") keep = true;
                else if (l == "~") keep = false;
                else return keep;
                return false;
            })
            .ToArray());

你可以使用正则表达式,如下所示:

var s = System.Text.RegularExpressions.Regex.Matches(stringtomatch,@"(?<=-'s*)[0-9]+'b(?='s*~)");

正则表达式基本上寻找一个数字。然后,它会检查后面的字符,查找可选的空格和短划线 (-)。然后它匹配所有数字,直到遇到另一个非单词字符。它检查一个可选的空格,然后检查一个必需的~(不知道这叫什么)。此外,它只返回数字(不返回空格和符号)。

所以基本上这个方法返回一个匹配列表。 然后你可以像这样使用它:

for (int i = 0; i < s.Count; i++)
{
    listBox1.Items.Add(s[i]);
}

编辑:

正则表达式中的拼写错误并更新了循环(由于某种原因,foreach 不适用于 MatchCollection)。

您可以尝试运行此测试脚本:

var stringtomatch = " asdjasdk jh kjh asd'n-'n123123'n~'nasdasd";
var s = System.Text.RegularExpressions.Regex.Matches(stringtomatch,@"(?<=-'s*)[0-9]+'b(?='s*~)");
Console.WriteLine(stringtomatch);
for (int i = 0; i < s.Count; i++)
{
    listBox1.Items.Add(s[i]);
}

尝试

List<Int32> values = new List<Int32>();
bool open = false;
String[] lines = File.ReadAllLines(fileName);
foreach(String line in lines)
{
  if( (!open) && (line == "-") )
  {
    open = true;
  }
  else if( (open) && (line == "~") )
  {
    open = false;
  }
  else if(open)
  {
    Int32 v;
    if(Int32.TryParse(line, out v)) 
    {
      values.Add(v);
    }
  }
}
Listbox.Items.AddRange(values);

这是一段简单的代码,用于读取文件,转换为整数(尽管您可以保留字符串)和处理列表。应从一些基本的 .NET/C# 教程开始。

编辑:若要将值添加到列表框,可以使用 .NET 3.5 切换到values.ForEach(v => listbox.Items.Add(v.ToString())。否则,你自己做一个。