接受文件 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]);
我目前的问题是尝试接受一个同时具有整数和非整数的文件,但完全忽略非整数并仅处理整数。
我认为通过结合这两个代码可以实现这一点,但显然并非如此。
实现这一目标的方法是什么?
这个怎么样?
此代码段从文件中读取内容,使用指定的分隔符拆分内容并验证数字。
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 选项要优雅得多,但它只是展示了实现相同目标的其他方法:)
编辑:方法没有返回任何内容 -_-