我使用StreamWriter
和WriteLine
在新班级中创建了一个文本文件。
我构建的每一行都是这样的:
w.WriteLine("key2" + "=" + value2);
w.WriteLine("key1" + "=" + value1);
然后在form1加载事件:
string[] lines = File.ReadAllLines(FileName);
现在我在索引0“key2 = value2”和索引1“key1 = value1”中的行 现在我想将每个值的行分配给另一个字符串,例如:
要为key1的value1赋值的字符串value1 和要赋值为key2的key2的字符串value2
有时可以更改行的顺序,文本文件中的第一行可以是value2和key2或value1和key1但是在所有情况下我都希望将字符串value1赋值为key1的key1和string2为使用key2的value2分配
这次我手动构建了文本文件,没有keyvaluepair或类似的东西,但在阅读它时我想读取左边的含义作为键,并且在=作为值之后。
但如果我在做:
string[] lines = File.ReadAllLines(Authentication.AuthenticationFileName);
for (int i = 0; i < lines.Length; i++)
{
}
我怎么知道总是按照我想要的顺序分配字符串无论文本文件中的行是否写入顺序?
我想知道如果我构建像键和值这样的文本文件它是如何工作的:key = value
答案 0 :(得分:7)
您可以构建一个按名称键入的值字典,以便更轻松地访问它们:
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"];
答案 1 :(得分:2)
使用Split
方法构建字典而不是在字符串中索引字符的另一种方法:
//Load lines from file
var dict = lines.Select(line => line.Split('=')).ToDictionary(split => split[0], split => split[1]);
var val1 = dict["key1"];
答案 2 :(得分:1)
您可以使用Split
方法从string
string[] lines = File.ReadAllLines(Authentication.AuthenticationFileName);
for (int i = 0; i < lines.Length; i++)
{
string val = lines[i].Split('=')[1].Trim();
}