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條經驗 獲得超22個贊
最好以惰性方式讀取文件:
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 關注
- 174 瀏覽
添加回答
舉報