Nalezení a smazání textu na neznámém řádku   zodpovězená otázka

VB.NET

Dobrý den,

zoufalý se na Vás opět obracím s problémem.

Potřebuji udělat aplikaci, která mi po spuštění smaže v textovém souboru určitý text. Znám přesné znění textu který chci smazat, ale nevím na kterém řádku se nachází.

Jde o to, že mám program (xfire), který se třeba jednou za týden aktualizuje a tudíž přepíše onen textový soubor a já potřebuji aplikaci která z toho textového souboru smaže dva řádky textu. Doufám, že jste mne pochopily :) Budu nesmírně vďečný za každou pomoc.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nevidím důvod proč nevzít soubor a nepoužít replace, poté uložit a je hotovo. To by nešlo?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Asi Vás přesně nechápu, jestli máte na mysli přepsání souboru tak to by nešlo. Nejsem moc zkušený tak se omlouvám jestli to myslíte správně :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Aha, tak jsem to sice myslel, ale když to nejde tak to nejde. Tedy aspoň touto cestou.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Nerozumím dost dobře Vaší potřebě. Pokud píšete, že chcete v textovém souboru smazat 2 řádky textu, vyplývá z toho, že ten soubor potřebujete změnit (a tak to pochopil i Tomáš, když Vám radil).

Řešením té jeho rady by mohl být kód např.:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ' cesta k souboru
        Dim soubor As String = "d:\test\text.txt"

        ' použité kódování (je třeba upravit dle skutečnosti, hlavně pokud autorem prohledávaného textu nejste sám)
        Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("windows-1250")

        ' otevřeme streamreader nasměrovaný na Váš soubor
        Dim str As New IO.StreamReader(soubor, enc)

        ' načteme obsah souboru a zavřeme str
        Dim obsah As String = str.ReadToEnd()
        str.Close()

        'přesné znění textu, který chcete nahradit
        ' pokud se jedná o více řádků, musíte mezi ně vložit ukončení řádku "vbCrLf
        Dim txt As String = "babička" & vbCrLf & "prodávala"

        'změníme načtený text
        obsah = obsah.Replace(txt, "")

        ' uložíme do stejného souboru (s přepsáním)
        Dim stw As New IO.StreamWriter(soubor, False, enc)
        stw.Write(obsah)
        stw.Close()

    End Sub

Pokud ale nemůžete "přepsat soubor" (asi leží někde mimo Vaši pravomoc), jak jej tedy chcete změnit?

Pokud pouze potřebujete pracovat se změněným textem souboru, tak z předloženého kódu vypusťte ten závěrečný odstavec (ohledně ukládání), a změněný obsah souboru máte k dispozici v proměnné obsah a můžete s ním libovolně pracovat.

Nebo v tom posledním odstavci můžete při ukládání použít jiný název či umístění souboru a můžete si tu upravenou verzi uložit tam, kde k tomu máte práva.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Jde to dokonce i na 3 řádky:

Dim data As String = IO.File.ReadAllText("puvodni_soubor.txt")
data = data.Replace("co nahradit", "cim nahradit")
IO.File.WriteAllText("cilovy_soubor.txt", data)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback