config.txt (内容)
databaseHost = localhost;
databaseUsername = root;
databasePassword = root;
databaseName = test;
C#代码
List<string> list = new List<string>();
using (StreamReader reader = new StreamReader("config.txt"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
list.Add(line); // Add to list.
Console.WriteLine(line); // Write to console.
}
}
Console.ReadKey();
目前打印出文本文件中的所有内容。 我想将文本存储到公共变量(我已经声明)。我尝试过使用String.Split。我想我错了,但如果这里有人能引导我朝着正确的方向前进,我将非常感激。我还在学习,我还很年轻!
我取得了一些进展: 继承我的新C#文件
char[] equals = { '=' };
List<string> list = new List<string>();
using (StreamReader reader = new StreamReader("config.txt"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
list.Add(line); // Add to list.
string[] linr = line.Split(equals);
Console.WriteLine(linr[1]); // Write to console.
}
}
Console.ReadKey();
}
并输出
localhost;
root;
root;
test;
一切顺利。
答案 0 :(得分:1)
这是一种方法。同样,有很多工具可以在NuGet.org上重复使用。这基于您在上面列出的格式,名称/值按=
符号分隔。它不会删除尾随;
,但我不确定它是否在您的文本文件中是故意还是由于其他原因。最简单的事情就是不要包含它。
// top of code file
using System.Linq;
using System.IO;
// top of code file
public Config config { get; set; }
public void ParseMethod() {
var text = System.IO.File.ReadAllLines("config.txt")
.Select(x => x.Split(new[] {'='}, StringSplitOptions.RemoveEmptyEntries))
.Where(x => x.Length > 1)
.Select(x => new {Name = x[0].Trim(), Value = x[1].Trim()})
.ToList();
config = new Config(){
DatabaseHost = text.FirstOrDefault(x => x.Name == "DatabaseHost")?.Value,
DatabaseUsername = text.FirstOrDefault(x => x.Name == "DatabaseUsername")?.Value,
DatabasePassword = text.FirstOrDefault(x => x.Name == "DatabasePassword")?.Value,
DatabaseName = text.FirstOrDefault(x => x.Name == "DatabaseName")?.Value,
};
}
<强> Config.cs 强>
public class Config
{
public string DatabaseHost { get; set; }
public string DatabaseUsername { get; set; }
public string DatabasePassword { get; set; }
public string DatabaseName { get; set; }
}
答案 1 :(得分:-1)
您可以改为使用System.IO.File.ReadAllLines:
var list = File.ReadAllLines("config.txt");
为了将成员存储在单独的变量中,您可以使用反射或简单地映射硬编码的每个变量。这是反思方式。:
public class MyVars
{
public string databaseHost;
public string databaseUsername;
public string databasePassword;
public string databaseName;
}
var instance = new MyVars();
var type = typeof(MyVars);
File.ReadAllLines("config.txt").
Select(l => l.Split(new char[]{'=',';'})).
ForEach(a => type.GetField(a[0].Trim()).
SetValue(instance, a[1].Trim()));