0

我有 txt 文件,其中包含我要抓取的数字。这个数字有前缀,可用于识别文件内的位置。

GeneratedNumber="120"

Number 可以是任意Int32长度值。

ps 文件格式为.txt,一行包含多个此键值对,例如:

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

4

6 回答 6

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);
                }
            }

        }
于 2013-08-13T06:38:26.810 回答
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();
于 2013-08-13T06:53:00.267 回答
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的信息

于 2013-08-13T06:29:44.000 回答
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;
}

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

于 2013-08-13T06:30:53.217 回答
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());
于 2013-08-13T06:40:14.350 回答
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;

假设文件中只有一个该数字的实例,或者即使有多个,您也只想抓取第一个。

于 2013-08-13T06:44:31.463 回答