Dobrý den,
již několik hodin se marně zabývám problémem, jak odstranit přebytečné nuly v IdNr čísle uvnitř textových souborů umístěné ve složce. Struktura textových souborů je následující:
IdNr 000000100
Name blabla
LastName blabla
Datum blabla
atd.
Samozřejmě každý soubor má jiné IdNr, včetně měnícího se počtu nul za sebou, ale ostatní struktura zůstavá stejná. Jde mi o to, jaký algoritmus najít v C# , aby mi v IdNr odstranil jen tyto nuly za sebou, ale číslo 100 ponechal. Zkoušel jsem použít Stringbuilder replace, ale to mi nahraní úplně všechny nuly, což je na pytel.
Samozřejmě dá se to udělat ručně, ale pokud mám třeba 3000 souborů, to je pak na střelení do hlavy.
Budu rád za jakoukoliv radu, jak to zpatlat... Abych se vyhnul pomluvám, že by to za mě dělal někdo jiný, posílám dosavadní zdrojový kod (samozřejmě nefunkční)
...
using System.IO;
namespace Delzero
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void tlac_prochazet_Click(object sender, EventArgs e)
{
DialogResult dialog = folderBrowserDialog1.ShowDialog();
if (dialog == DialogResult.OK)
TP_zdroj.Text = folderBrowserDialog1.SelectedPath;
}
private void Tlac_start_Click(object sender, EventArgs e)
{
var files = Directory.GetDirectories(TP_zdroj.Text, "*.txt", SearchOption.TopDirectoryOnly);
foreach (var fPath in files)
{
String[] oldLines = File.ReadAllLines(fPath);
String key = "IdNr 000";
if (oldLines.Length != 0)
{
IList<String> newLines = new List<String>();
foreach (String line in oldLines)
{
String newLine = line;
if (line.Contains(key))
{
int numberRangeStart = line.IndexOf(key) + key.Length;
int numberRangeEnd = line.IndexOf(" ", numberRangeStart);
String numberStr = line.Substring(numberRangeStart, numberRangeEnd - numberRangeStart);
int number = int.Parse(numberStr);
String withoutZeros = number.ToString();
newLine = line.Replace(key + numberStr, key + withoutZeros);
newLines.Add(line);
}
newLines.Add(newLine);
}
File.WriteAllText(fPath,newLines);
}
}
}
}
}
Momentálně mi to píše chybu při ukládání souboru v řádku File.WriteAllText(fPath,newLines);...
Už jsem z toho na švestku. Tohle je třeba zbytečně složitý způsob..
Nechci hotový kod, jen poradit, jak donutit C#, že pokud na nultém řádku, kde je IdNr, je 2 a více nul za sebou, aby je smazal a ponechal číslo za nulama, poté soubor uložil a načetl další.. (jednoduše řečeno)
Díky moc za jakékoliv reakce, nebo nějaký tip