如何读取文本文件键值并将值分配给字符串 var?
Posted
技术标签:
【中文标题】如何读取文本文件键值并将值分配给字符串 var?【英文标题】:How can i read a text file key value and assign the values to strings vars? 【发布时间】:2016-03-14 13:54:56 【问题描述】:我使用StreamWriter
和WriteLine
在一个新类中创建了一个文本文件。
每一行我都是这样构建的:
w.WriteLine("key2" + "=" + value2);
w.WriteLine("key1" + "=" + value1);
然后在form1中加载事件:
string[] lines = File.ReadAllLines(FileName);
现在我在索引 0 “key2 = value2”和索引 1 “key1 = value1”中的行 现在我想将每个值的行分配给另一个字符串,例如:
字符串 value1 被赋值为 key1 的 value1 和字符串 value2 被赋值为 key2 的 value2
有时可以更改行的顺序,文本文件中的第一行可以是 value2 和 key2 或 value1 和 key1,但在所有情况下,我希望字符串 value1 被分配 key1 的 value1 和字符串 value2分配了 key2 的 value2
这一次我手动构建了文本文件,没有 keyvaluepair 或类似的东西,但是当我读回它时,我想把左边的意思读为键,在 = 之后读为值。
但如果我这样做:
string[] lines = File.ReadAllLines(Authentication.AuthenticationFileName);
for (int i = 0; i < lines.Length; i++)
无论行在文本文件中的写入顺序如何,我怎么知道始终按照我想要的顺序分配字符串?
我想知道如果我构建像键和值这样的文本文件,它会如何工作:key = value
【问题讨论】:
你是指字典吗?如果是这样,您可以逐行读取并使用 split 方法通过 '=' 拆分键和值 您可以创建一个字典来存储键和值对。现在通过 Dictionary 读取属性。对于前public string Key1 get return _dict["Key1"];
【参考方案1】:
您可以构建一个按名称键入的值字典,以便更轻松地访问它们:
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"];
【讨论】:
字典很好用。我刚刚在子字符串的末尾添加了 Trim :)p.Line.Substring(0, p.Pos).Trim() 以避免空格【参考方案2】:使用Split
方法构建字典的另一种方法,而不是对字符串中的字符进行索引:
//Load lines from file
var dict = lines.Select(line => line.Split('=')).ToDictionary(split => split[0], split => split[1]);
var val1 = dict["key1"];
【讨论】:
【参考方案3】:您可以使用Split
方法从string
获取右侧值
string[] lines = File.ReadAllLines(Authentication.AuthenticationFileName);
for (int i = 0; i < lines.Length; i++)
string val = lines[i].Split('=')[1].Trim();
【讨论】:
以上是关于如何读取文本文件键值并将值分配给字符串 var?的主要内容,如果未能解决你的问题,请参考以下文章
如何将文本文件中的值分配给python函数中的数组并将其用作全局?