从文本文件中获取参数c#

时间:2015-02-12 09:54:49

标签: c#

我有一个文本文件格式如此......

[Dimensions]
Height=100
Width=200
Depth=1000

我正在尝试编写一个方法,该方法将参数名称(如"Height")与文本一起使用,并返回参数的值,但它当前不起作用

public int getParameter(data, param) {
        var start = data.IndexOf(param);
        var end = data.IndexOf('\r\n', start);
        return data.Substring(start + param.length + 1, end);
    }

但它总是返回下一行的部分文本,例如

  

" 100 \ r \ NWID"

5 个答案:

答案 0 :(得分:2)

我可能会使用正则表达式:

public int getParameter(string data, string param) {
        var expr = "^" + param + @"=(\d+)\r?$";
        var match = Regex.Match(data, expr, 
                                  RegexOptions.Multiline | RegexOptions.IgnoreCase);
         // NB - can remove the option to IgnoreCase if desired
        return match == null || !match.Success ? default(int) : int.Parse(match.Groups[1].Value);
    }

答案 1 :(得分:0)

您将错误的值传递给Substring的第二个参数。它是lenght,而不是结束索引,所以它应该是:

var startIndex = start + param.length + 1;

return data.Substring(startIndex, end - startIndex);

答案 2 :(得分:0)

您似乎正在尝试解析已经some options avaiable的ini文件。

答案 3 :(得分:0)

这与TOML非常相似,您可能希望进行细微更改并使用TOML.NET Package

我没有对它进行测试,但是在一个go项目中使用了TOML并且效果很好。需要自己努力。

答案 4 :(得分:0)

该文件遵循ini格式,因此我建议使用ini-parser进行阅读:https://github.com/rickyah/ini-parser

就像:

一样简单
   var parser = new FileIniDataParser();
   IniData parsedData = parser.LoadFile("config.ini");
   int height = Int32.parse(parsedData["Height"])

免责声明,我是图书馆的作者