使用';从ini文件中读取值;文件.ReadAllText';

本文关键字:文件 读取 ReadAllText ini 使用 | 更新日期: 2023-09-27 18:25:59

我有一些ini文件,其中包含以下字符串:_DeviceName = #1234。现在我想得到_DeviceName的值1234,但它显示了完整的字符串_DeviceName = #1234。我试过这个代码:

if (File.Exists("inifile.ini"))
{
    if (File.ReadAllText("inifile.ini").Split(''r', ''n').First(st => st.StartsWith("_DeviceName")) != null)
    {
        string s = File.ReadAllText("inifile.ini").Split(''r', ''n').First(st => st.StartsWith("_DeviceName"));
        MessageBox.Show(s);
    }
}

使用';从ini文件中读取值;文件.ReadAllText';

您可以改用File.ReadAllLines。如果您正在做任何更复杂的事情,您可能需要查看现有的ini文件读取器,但这应该可以工作。顺便说一句,这么快打两个File.ReadAllText电话效率不高;在大多数情况下,最好只将结果存储在变量中)。

if (File.Exists("inifile.ini"))
{
   string[] allLines = File.ReadAllLines("inifile.ini");
   string deviceLine = allLines.Where(st => st.StartsWith("_DeviceName")).FirstOrDefault();
   if(!String.IsNullOrEmpty(deviceLine))
   {
      string value = deviceLine.Split('=')[1].Trim();
      MessageBox.Show(value);
   }
}

您可以添加另一个拆分来获得值:

if (File.Exists("inifile.ini"))
{
    if (File.ReadAllText("inifile.ini").Split(''r', ''n').First(st => st.StartsWith("_DeviceName")) != null)
    {
        string s = File.ReadAllText("inifile.ini")
                   .Split(''r', ''n').First(st => st.StartsWith("_DeviceName"))
                   .Split('=')[1];
        MessageBox.Show(s);
    }
}

我制作了一个实现INI读写器的应用程序。源代码还不可用,但请继续查看,我会在几天后上传源代码(今天是8/14/13)。这个特殊的INI阅读器是区分大小写的,可能需要对特殊字符进行修改,但到目前为止我没有遇到任何问题。

http://sourceforge.net/projects/dungeonchest/

一种肮脏的方法是使用String.Replace("_DeviceName=#",")