Diskuze: Problém s vymazáním řádku
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Co za proměnnou je přesně ten file? Že tam používáš metodu RemoveAt, která je dostuná na Listu.
K mazání řádků v souboru bych to udělal tak, že soubor načtu, pak v něm vymažu řádky a ten noý uložím. Máš to docela podobně.
List<string> lines = new List<string>();
using (StreamReader reader = new StreamReader("File"))
{
int lineNumber = 0;
while (!reader.EndOfStream)
{
lineNumber++;
string line = reader.ReadLine();
if (lineNumber > 5)
lines.Add(line);
}
}
using (StreamWriter writer = new StreamWriter("File"))
{
foreach (string line in lines)
writer.WriteLine(line);
}
// Nebo
File.WriteAllLines("File", lines.ToArray());
To řešení sem teď splácnul narychlo, ale mělo by fungovat, jako idea by to mělo posloužit.
Je doplnění: Zkonstroluj si v breakpointem, jestli před tím RemoveAt, je vůbec něco v té proměnné file.
file :
var file = new List<string>(System.IO.File.ReadAllLines("bazar.data"));
Chybu to vyhazuje u file.RemoveAt(3);
Kód chci měnit co nejméně.
Jde o to, že v momentě, kdy smažeš string na indexu 0, posune se tam ten, co byl předtím na 1, takže musíš udělat něco jako tohle:
for(int i=0;i<5;i++)
{
file.RemoveAt(0);
}
potom samozřejmě uložit a pod, tohle jen smaže stringy z listu.
Jo, díky, nakonec jsem využil jinou metodu, ale tohle jsem si taky uvědomil.
Když jsou ty indexy zasebou, tak stačí RemoveRange.
Zobrazeno 8 zpráv z 8.