2015-06-15 45 views
-2

我想从c#中的文本文件中只提取数字。我的文本文件就像下面我想从c中的文本文件中只提取数字#

xasd 50 ysd 20 zaf 40 bhar 60 

我想浏览一个文件openfileDialoug和读取该文件,并从同一个文件中提取号码,需要将这些值与恒定值进行比较说60。我需要显示有多少数字比这个常数更多。如果这些数字大于60,那么我需要将更大的值的数量与现有的文本一起附加到richtextBox。

+0

可以告诉你多一点的文本文件作为样本? – Ali

回答

0

如果你的文件总是这样,你已经证明,那么你可以很容易地把它分解和解析:

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 
    } 
} 
+0

非常感谢你..它帮助了我很多。 –

1

可以使用Int32.TryParse(string s,out int result)方法。如果字符串s可以被解析为一个整数并将值存储在int结果中,则返回true。此外,您可以使用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 
     } 
    } 
} 
1

正则表达式是要找到数字的字符串,它是OP需要一个优雅的方式,是这样的:

string allDetails = File.ReadAllText(Path); 

result = Regex.Match(allDetails, @"\d+").Value; 

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

如果您也想照顾负数=,然后做这个修改

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

希望这会有所帮助,请查看以下职位:

Find and extract a number from a string