[英]Save Variables from a .txt File on C#
抱歉,我是C#的新手,正在使用Visual Studio。 我正在尝试使用变量创建.txt,因此稍后需要更改路径号时,可以在.txt文件上进行更改,而无需打开代码并进行更新。
例如我有这个archive.txt
Joe;Rodriguez;C:\example\hello.txt;398663
这是我的代码:
class Program
{
static void Main(string[] args)
{
String[] split;
StreamReader sr = File.OpenText(@"C:\folder\archive.txt");
string line;
while ((line = sr.ReadLine()) != null)
{
split = line.Split(new Char[] { ';' });
string name = split[0];
string lastname = split[1];
string path = split[2];
string num = split[3];
Console.WriteLine("Split 0 is: " + name);
Console.WriteLine("Split 2 is: " + lastname);
Console.WriteLine("Split 3 is: " + path);
Console.WriteLine("Split 4 is: " + num);
}
}
}
它的作用是将每个值保存在一个变量中,以便在代码上使用它之后。 它在符号“ ; ”之后得到值。
如果我的.txt文件是这样保存的,如何保存变量:
首先,.txt Dile在一行中并以“ ; ”分隔,我要做的是该程序仅将值保存在“ =(space) ”之后,而不是一行,而是在每行上都输入一个线。
有办法吗?
感谢您的高级帮助。
您的问题是您一次要读一行,然后在该行包含的字符串上调用split
。
相反,您可以做的是逐行将文本文件中的变量分开,然后在循环的每次迭代中将每行的内容分配给不同的变量。
这是我正在谈论的示例。 它使用字典,因此您可以遍历变量。
尝试这个:
Dictionary<string, string> myVars = new Dictionary<string, string>();
while ((line = sr.ReadLine()) != null)
{
split = line.Split(new Char[] { '=' });
myVars.Add(split[0], split[1]);
}
Console.WriteLine("Split 0 is: " + myVars["name"]);
Console.WriteLine("Split 2 is: " + myVars["lastname"]);
Console.WriteLine("Split 3 is: " + myVars["path"]);
Console.WriteLine("Split 4 is: " + myVars["num"]);
Console.ReadKey();
这种方法的缺点是,为了使用非字符串变量,您必须将它们转换,但这不应该太难。
此示例还要求您的txt文件格式如下:
name=Joe
lastname=Rodriguez
path=C:\example\hello.txt
num=398663
在对您的问题的评论中,您说:
我有一个txt文件,可以从中读取一些值并将它们保存到特定的字符串中。 我的原始txt文件如下所示:Joe; Rodriguez; C:\\ example \\ hello.txt; 398663它正在保存用(;)符号分隔的值,但是我想要的最终结果是要插入一行分隔符我的txt文件上带有(;)的符号应具有以下格式:name = Joe lastname = Rodriguez path = C:\\ example \\ hello.txt num = 398663每行中的每个值
您可以通过以下方式读取文件,然后以所需方式生成输出:
using (var output = new StreamWriter("Output.txt"))
{
foreach (var thisLine in File.ReadLines("Input.txt"))
{
var splits = thisLine.Split(';');
output.WriteLine($"name = {splits[0]}");
output.WriteLine($"lastname = {splits[1]}");
output.WriteLine($"path = {splits[2]}");
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.