我尝试仅从 c# 的文本文件中提取数字

本文关键字:文件 文本 提取 数字 | 更新日期: 2023-09-27 17:56:26

我试图从 c# 中的文本文件中提取数字。我的文本文件如下所示

xasd 50 ysd 20 zaf 40 bhar 60

我正在尝试浏览带有openfileDialoug的文件并读取该文件并从同一文件中提取数字,并且需要将这些值与常量值进行比较,例如60.我需要显示存在多少个数字超过该常量数字。如果这些数字大于 60,那么我需要将更大值的数量与现有文本一起附加到 richtextBox。

我尝试仅从 c# 的文本文件中提取数字

您可以使用

Int32.TryParse(string s,out int result) 方法。如果字符串 s 可以解析为整数,则返回 true,并将值存储在 int result 中。此外,您可以使用 String.Split(Char[]) 方法来拆分从文本文件中读取的行。

 string line = fileObject.ReadLine();
 int constant = 60; //For your example
 int num = 0;
 string []tokens = line.Split(); //No arguments in this method means space is used as the delimeter
 foreach(string s in tokens)
 {
     if(Int32.TryParse(s, out num)
     {
         if(num > constant)
         {
             //Logic to append to Rich Text Box
         }
     }
 }

正则表达式是一种在字符串中查找数字的优雅方法,这是 OP 要求,如下所示:

string allDetails = File.ReadAllText(Path);
result = Regex.Match(allDetails, @"'d+").Value;

现在resultString将包含所有提取的整数

如果您也想处理负数=,请进行此修改

result = Regex.Match(allDetails, @"-?'d+").Value;

希望这有帮助,请查看以下帖子:

从字符串中查找和提取数字

如果你的文件总是像你显示的那样,那么你可以很容易地拆分它并解析:

string filePath = ""; // from OpenFileDialog
string fileContents = File.ReadAllText(filePath);
string[] values = fileContents.Split();
int valueInt, greaterValuesCount = 0;    
foreach (var value in values)
{
    if (int.TryParse(value, out valueInt))
    { 
        greaterValueCount++;
        // Do something else here
    }
}