为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
智慧大石 2023-04-29 15:43:55
我写了这段代码,将“@”和“:”分开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 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

您正在不断覆盖该循环中的文件。而是将结果收集在 a 中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];

             }

        )

    ); 

}


查看完整回答
反对 回复 2023-04-29
?
茅侃侃

TA贡献1842条经验 获得超21个赞

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


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

    }

}


查看完整回答
反对 回复 2023-04-29
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

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

格式化 = Split[0] + ":" + Split1[1];

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


查看完整回答
反对 回复 2023-04-29
  • 3 回答
  • 0 关注
  • 120 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信