读取文件并获取整数

时间:2013-08-13 06:23:36

标签: c# .net

我有txt文件,其中包含我想要抓取的号码。此号码具有前缀,可用于标识文件内的位置。

GeneratedNumber="120"

数字可以是任何Int32长度值。

P.S。该文件的格式为.txt,一行包含更多此键值对,例如:

<Output Change="12.13" GeneratedNumber="120" Total="99.21" />

6 个答案:

答案 0 :(得分:3)

您可以使用以下代码。不是很优雅或最好但经过测试并且工作正常。

 string[] lines = File.ReadAllLines(Path.Combine(Application.StartupPath, "test.txt"));
        foreach (string s in lines)
        {
            if (s.ToLowerInvariant().Contains("generatednumber"))
            {
                string temp = s.Substring(s.ToLowerInvariant().IndexOf("generatednumber"));
                temp = temp.Substring(temp.IndexOf("\"") + 1);
                temp = temp.Substring(0,temp.IndexOf("\""));
                int yournumber;
                if (int.TryParse(temp, out yournumber))
                {
                    Console.WriteLine("Generated Number = ", yournumber);
                }
            }

        }

答案 1 :(得分:2)

我只测试了这个xml方面,但这应该可行(你可能希望添加错误处理和转换为整数)

var values = new List<string>();
using(var sr = new StreamReader(fileName))
{
    string line;
    XmlDocument x = new XmlDocument();
    while((line = sr.ReadLine()) != null)
    {

        x.LoadXml(line);
        foreach(var node in x.GetElementsByTagName("Output"))
           values.Add(node.Attributes["GeneratedNumber"].Value);    
    }
}

使用:

进行测试
XmlDocument x = new XmlDocument();
x.LoadXml("<Output Change=\"12.13\" GeneratedNumber=\"120\" Total=\"99.21\" />");

Console.WriteLine(x.GetElementsByTagName("Output")[0]
                      .Attributes["GeneratedNumber"].Value);
Console.ReadLine();

答案 2 :(得分:1)

您可以使用此代码

     // Read each line of the file into a string array. Each element 
     // of the array is one line of the file. 
     string[] lines = System.IO.File.ReadAllLines(@"C:\yourFile.txt");

     foreach (string line in lines)
     {
        string sub = line.Substring(line.IndexOf("GeneratedNumber=") + 1);
        int num = int.Parse(sub.IndexOf("\""));
        // whatever you want to do with the integer
     }

读取文本文件行并将“=”符号后的行解析为整数。

取决于您可能使用的文件的外观XmlDocument。请阅读有关Xml here

的信息

答案 3 :(得分:1)

此代码应符合您的需求:

private static int GetNumber(string fileName)
{
    string line;
    string key = "GeneratedNumber=\"";
    using (StreamReader file = new StreamReader(fileName))
    {
       while ((line = file.ReadLine()) != null)
       {
          if (line.Contains(key))
          {
             int startIndex = line.IndexOf(key) + key.Length;
             int endIndex = line.IndexOf("\"", startIndex);
             return int.Parse(line.Substring(startIndex, endIndex - startIndex));
          }
       }
    }

    return 0;
}

您也可能对这些文章感兴趣:

答案 4 :(得分:1)

string[] lines = File.ReadAllLines("path to file");
Hashtable values = new Hashtable();
foreach (string line in lines)
{
    if (line.Contains("=\""))
    {
        string[] split = line.Split('=');
        values.Add(split[0], split[1].Replace("\"",""));
    }
}
// GeneratedNumber is the value of GeneratedNumber in the file.
int GeneratedNumber = Int32.Parse(values["GeneratedNumber"].ToString());

答案 5 :(得分:1)

string filePath = "your_file_path";
var match = System.Text.RegularExpressions.Regex.Match(
    System.IO.File.ReadAllText(filePath),
    @"GeneratedNumber=""(\d+)""",
    System.Text.RegularExpressions.RegexOptions.IgnoreCase);

int num = match.Success ? int.Parse(match.Groups[1].Value) : 0;

假设文件中只有一个该号码的实例,或者你想只抓取第一个,即使有多个。