簡體   English   中英

從C#中的.txt文件保存變量

[英]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文件

首先,.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM