我试图从c#中的文本文件中仅提取数字。我的文本文件如下所示
xasd 50 ysd 20 zaf 40 bhar 60
我正在尝试使用openfileDialoug
浏览文件并读取该文件并从同一文件中提取数字,并需要将这些值与常量值60
进行比较。我需要显示存在的数量多于该常数。如果这些数字大于60,那么我需要将更多值的数量与现有文本一起附加到richtextBox。
答案 0 :(得分:1)
您可以使用Int32.TryParse(string s,out int result)方法。如果字符串s 可以解析为整数并将值存储在 int result 中,则返回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 :(得分:1)
正则表达式是一种在字符串中查找数字的优雅方法,这是OP要求,如:
string allDetails = File.ReadAllText(Path);
result = Regex.Match(allDetails, @"\d+").Value;
现在resultString
将包含所有提取的整数
如果您想要处理负数=,则执行此修改
result = Regex.Match(allDetails, @"-?\d+").Value;
希望这有帮助,请查看以下帖子:
答案 2 :(得分: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
}
}