如何读取文本文件键值并将值分配给字符串变量
本文关键字:分配 字符串 变量 何读 取文本 文件 键值 | 更新日期: 2023-09-27 18:26:16
我使用StreamWriter
和WriteLine
在一个新类中创建了一个文本文件。我建造的每一条线路都是这样的:
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();
}