我有一个文本文件格式如此......
[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"
答案 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"])
免责声明,我是图书馆的作者