如何读取文本文件键值并将值分配给字符串变量

本文关键字:分配 字符串 变量 何读 取文本 文件 键值 | 更新日期: 2023-09-27 18:26:16

我使用StreamWriterWriteLine在一个新类中创建了一个文本文件。我建造的每一条线路都是这样的:

w.WriteLine("key2" + "=" + value2);
w.WriteLine("key1" + "=" + value1);

然后在form1中加载事件:

string[] lines = File.ReadAllLines(FileName);

现在,在索引0中的行中"key2=value2"和索引1中的行"key1=value1"现在我想将每一行的值分配给另一个字符串,例如:

要用键1的值1指定的字符串值1和字符串值2,用键2 的值2赋值

有时行的顺序可以更改,文本文件中的第一行可以是value2和key2,也可以是value1和key1,但在所有情况下,我都希望字符串value1被分配key1的value1,字符串value2被分配key2的value2

这一次,我手动构建了文本文件,没有key-valuepair或类似的东西,但当读回它时,我想把左边的意思读成键,把=读成值。

但如果我在做:

string[] lines = File.ReadAllLines(Authentication.AuthenticationFileName);
for (int i = 0; i < lines.Length; i++)
{
}

我怎么知道无论行在文本文件中的写入顺序如何,都要按我想要的顺序分配给字符串?

我想知道如果我构建像密钥和值这样的文本文件:key = value

如何读取文本文件键值并将值分配给字符串变量

,它会如何工作

您可以构建一个按名称键控的值字典,以便更容易地访问它们:

string[] lines = File.ReadAllLines(Authentication.AuthenticationFileName);
// Get the position of the = sign within each line
var pairs = lines.Select(l => new { Line = l, Pos = l.IndexOf("=") });
// Build a dictionary of key/value pairs by splitting the string at the = sign
var dictionary = pairs.ToDictionary(p => p.Line.Substring(0, p.Pos), p => p.Line.Substring(p.Pos + 1));
// Now you can retrieve values by key:
var value1 = dictionary["key1"];

使用Split方法构建字典而不为字符串中的字符编制索引的另一种方法:

//Load lines from file
var dict = lines.Select(line => line.Split('=')).ToDictionary(split => split[0], split => split[1]);
var val1 = dict["key1"];

您可以使用Split方法从string 中获取右侧值

string[] lines = File.ReadAllLines(Authentication.AuthenticationFileName);
for (int i = 0; i < lines.Length; i++)
{
  string val = lines[i].Split('=')[1].Trim();
}