我有一个ini文件内容如下:
[Test]
Item="123","456"
我使用下面的代码来解析该值。
但是我发现它没有返回我期望的值。
似乎该功能会自动删除第一个和最后一个引号。
有什么办法可以解决这个问题吗?
StringBuilder stringBuilder = new StringBuilder(500);
WINAPI.GetPrivateProfileString("Test", "Item", "", stringBuilder,500, "D:\\Test.ini");
var _value = stringBuilder.ToString(0, stringBuilder.Length); //get 123","456 instead "123","456"
只需在开头和结尾添加新的双引号即可。
[Test]
Item=""123","456","789","abc","def""
你为什么使用 ini 文件以及为什么使用
GetPrivateProfileString
?
如果我读到这样的相关问题,即使是 2011 年的人似乎也试图远离它:GetPrivateProfileString 的目的是什么?
因此,也许您应该将应用程序配置存储在其他位置,例如 app.config 文件。但是,即使它在 ini 文件中,您也可以简单地使用自定义代码读取它:
public string? GetIniValue(string iniPath, string sectionName, string key)
{
if (!File.Exists(iniPath))
{
return null;
}
return File.ReadLines(iniPath)
.SkipWhile(l => !l.Equals($"[{sectionName}]", StringComparison.InvariantCultureIgnoreCase))
.Skip(1) // skip header
.TakeWhile(l => l.Contains('='))
.FirstOrDefault(l => l.Contains(key, StringComparison.InvariantCultureIgnoreCase))?
.Split('=').Last().Trim();
}
用途:
string testItemValue = GetIniValue(@"D:\\Test.ini", "Test", "Item");