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];
}
)
);
}
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);
}
}
TA贡献1757条经验 获得超8个赞
由于我没有看到任何格式的数据,我只能猜测错误可能出在这里:
格式化 = Split[0] + ":" + Split1[1];
您只从每个字符串数组中获取单个元素。尝试遍历数组 Split 和 Split1 中的所有元素以打印它们的值
- 3 回答
- 0 关注
- 120 浏览
添加回答
举报