接受文件 C# 中的整数并忽略非整数

本文关键字:整数 文件 | 更新日期: 2023-09-27 18:35:06

目前我编写的代码如果文本文件仅包含非整数,则可以正确显示错误消息

foreach (var line in System.IO.File.ReadLines(fileName))
  if (fileContents.Any(char.IsDigit))
  {
    return;
  }
    else
  {
    MessageBox.Show("Warning: File does not contain integers.");
    return;
  }

此外,我还编写了将仅包含整数的文本文件从字符串转换为整数的代码

string[] eachString = fileContents.Split(new char[] { ' ', ''t', ''r', ''n' }, StringSplitOptions.RemoveEmptyEntries);
int[] eachInt = new int[eachString.Length];
for (int i = 0; i < eachString.Length; i++)
   eachInt[i] = int.Parse(eachString[i]);

我目前的问题是尝试接受一个同时具有整数和非整数的文件,但完全忽略非整数并仅处理整数。

我认为通过结合这两个代码可以实现这一点,但显然并非如此。

实现这一目标

的方法是什么?

接受文件 C# 中的整数并忽略非整数

这个怎么样?

此代码段从文件中读取内容,使用指定的分隔符拆分内容并验证数字。

var onlyints = File.ReadLines(filename)
                .SelectMany(line => line.Split(new char[] {' ', ''t', ''r', ''n' ,','}, StringSplitOptions.RemoveEmptyEntries))
                .Where(num => num => Regex.IsMatch(num, @"^'d+$"));

当文件中没有数字时,您可以弹出警告消息,例如...

if(!onlyints.Any()) MessageBox.Show("Warning: File does not contain integers.");

linq 之前的一种"老派"方法将我们所有的屁股从这种事情中拯救出来。未编译,因为我在移动 atm 上(在移动设备上做代码很难,只是为了让你知道)。

private List<int> test()
{
    var intResults = new List<int>();
    var file = File.ReadLines("blah");
    foreach (var line in file)
    {
       var lineSplit = line.Split(
            new char[] { ' ', ''t', ''r', ''n' }, StringSplitOptions.RemoveEmptyEntries);
         foreach (var item in lineSplit)
         {
             var result = 0;
             if (int.TryParse(item, out result))
                 intResults.Add(result); 
         }
    }
    return intResults;
}

我不认为这是答案,因为 linq 选项要优雅得多,但它只是展示了实现相同目标的其他方法:)

编辑:方法没有返回任何内容 -_-