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

C# 如何在拆分字符串中输出所有字符串数组?,c#,string,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 Cr

我已经编写了拆分@和的代码:

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);
    }
}

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

格式化=拆分[0]+:+Split1[1]


您只从每个字符串数组中获取单个元素。尝试在数组Split和Split1中的所有元素之间循环以打印它们的值

您正在该循环中不断覆盖文件。而是将结果收集到一个列表中,然后将其写入文件

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)
}

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

File.ReadLines(targetfile).ForEach(line =>
{
    File.AppendAllText("path", string.Join(":", Regex.Split(line, "@|:")
                               .Cast<Match>().Select(m => m.Value)));
});

static class ExtensionMethods
{
    internal static void ForEach<T>(this IEnumerable<T> enumerable, Action<T> action)
    {
        if (enumerable == null) throw new NullReferenceException($"'{nameof(enumerable)}' argument is null");
        using var enumerator = enumerable.GetEnumerator();
        while (enumerator.MoveNext()) action(enumerator.Current);
    }
}

var Split=text.splitnewchar[]{'@',':'};File.WriteAllTextoutputfile,string.Join,格式化;你能给我们看一个你正在解析的行的例子和你想要的确切输出吗?你现在拥有的应该是第一个@之前的所有内容,然后是第一个和第二个@之间的所有内容:或者行的末尾,如果没有第二个,这并不能解决问题这只输出一个字符串我的意思是我需要输出所有字符串,而不仅仅是一个哦,我看到问题了。循环中的File.WriteAllText将一次又一次地连续覆盖该文件。尝试将结果放入列表,并在loop.Ex之后使用File.writeAllines。George@live.com:乔治敦如果你使用Tolistops,那就不懒惰了。。。我忘记了custom ForEach,但这仍然会覆盖每个循环中的文件。现在的缺点是,如果他们再次运行此代码,它只会将更多内容附加到文件中,而不是替换它。我明白了。。谢谢你以后再给我写推荐信。
File.ReadLines(targetfile).ForEach(line =>
{
    File.AppendAllText("path", string.Join(":", Regex.Split(line, "@|:")
                               .Cast<Match>().Select(m => m.Value)));
});

static class ExtensionMethods
{
    internal static void ForEach<T>(this IEnumerable<T> enumerable, Action<T> action)
    {
        if (enumerable == null) throw new NullReferenceException($"'{nameof(enumerable)}' argument is null");
        using var enumerator = enumerable.GetEnumerator();
        while (enumerator.MoveNext()) action(enumerator.Current);
    }
}