如何在拆分字符串中输出所有字符串数组?

时间:2019-06-23 13:03:48

标签: c# string

我编写了这段代码,将“ @”和“:”分开

var Split = Texts.Split(new char[] { '@' });
var Split1 = Texts.Split(new char[] { ':' });

我想将所有字符串数组输出到文件。我已经尝试过,但只得到一个字符串,而不是全部。

formatted = Split[0] + ":" + Split1[1];
File.WriteAllText(outputfile, formatted);

这是我的代码:

public void CreateUsernameList(string targetfile,string outputfile)
{
    string[] texts = File.ReadAllLines(targetfile);
    string formatted = null;
    foreach(string Texts in texts)
    {
        var Split = Texts.Split(new char[] { '@' });
        var Split1 = Texts.Split(new char[] { ':' });
        formatted = Split[0] + ":" + Split1[1];
        File.WriteAllText(outputfile, formatted);
    }
}

3 个答案:

答案 0 :(得分:1)

您正在该循环中不断覆盖文件。而是将结果收集到List<string>中,然后将其写入文件。

public void CreateUsernameList(string targetfile,string outputfile)
{
    string[] texts = File.ReadAllLines(targetfile);
    string formatted = null;
    List<string> output = new List<string>();
    foreach(string Texts in texts)
    {
        var Split = Texts.Split(new char[] { '@' });
        var Split1 = Texts.Split(new char[] { ':' });
        formatted = Split[0] + ":" + Split1[1];
        output.Add(formatted);
    }

    File.WriteAllLines(outputfile, output)
}

不使用太多内存的替代方法是

public void CreateUsernameList(string targetfile,string outputfile)
{
    File.WriteAllLines(
        outputfile,
        File.ReadLines(targetfile)
            .Select(line => 
             {
                 var Split = line.Split(new char[] { '@' });
                 var Split1 = line.Split(new char[] { ':' });
                 return Split[0] + ":" + Split1[1];
             }
        )
    ); 
}

答案 1 :(得分:0)

由于我看不到任何格式的数据,所以我只能猜测错误可能在这里:

formatted = Split [0] +“:” + Split1 [1];

您仅从每个字符串数组中获取单个元素。尝试遍历数组Split和Split1中的所有元素以打印其值

答案 2 :(得分:0)

最好以惰性方式读取文件:

 datasets: [
    {
        label: "",
        fill: false,
        .....
        .......
        data: [65, 59, 80, 0, 56, 55, 40],
    }
]