C# týden ITnetwork Flashka zdarma
Akce! Pouze tento týden sleva až 80 % na kurzy C# .NET. Lze kombinovat s akcí 50 % bodů navíc na prémiový obsah!
Brno? Vypsali jsme pro vás nové termíny školení Základů programování a OOP v Brně!

Diskuze: Výběr textu ze souboru

Aktivity (4)
Avatar
Kenvil
Člen
Avatar
Kenvil:26. února 18:43

Zdravím pracuji na projektu, který nahraje text do listboxu s toho uživatel vybere zadaný řádek, přepíše ho a uloží. Tohle všechno mám ale problém nastává v tom, že potřebuji nahrát jen část textu, který je obsažen v " ".

Viz. MIL_FOCUS_SUP­PORTIVE:0 "Supportive" a potřebuji nahrát text pouze ten v " " přeložit ho a tu část nahrát zpátky do MIL_FOCUS_SUP­PORTIVE:0 "Podpora"

Předem děkuji

 
Odpovědět 26. února 18:43
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na Kenvil
Marek Uhlik:26. února 19:42

Tak získat text který je v uvozovkách lze několika způsoby ,ale pro mě nejlehčí a nejlepší jak ho získávat je pomocí regexu.

string pattern = "\"(.*?)\"";
MatchCollection matches = Regex.Matches(text, pattern);
foreach(Match match in matches)
{
  Console.WriteLine(match.Groups[0].Value);
}

A u zápisu je to skoro stejný.Záleží jak čteš a zapisuješ do souboru.Jestli načítáš celý soubor a nebo to projíždíš řádek po řádku.
Snad ti to nějak pomůže.

 
Nahoru Odpovědět 26. února 19:42
Avatar
Kenvil
Člen
Avatar
Odpovídá na Marek Uhlik
Kenvil:26. února 19:44

Načítám celý soubor ale v listboxu upravuji jen konkrétní řádky, hned to vyzkouším a dám vědět

 
Nahoru Odpovědět 26. února 19:44
Avatar
Kenvil
Člen
Avatar
Odpovídá na Marek Uhlik
Kenvil:26. února 19:53

Tak úplně netuším jak to zaimplementovat můj kod pro načtení vypadá takto

private void btn_Load_Click(object sender, EventArgs e)
        {
            try
            {


                string[] lines = System.IO.File.ReadAllLines(txtPatch.Text.Trim());
                foreach (string line in lines)
                {
                    listBox1.Items.Add(line);
                }
            }

v C# začínám

 
Nahoru Odpovědět 26. února 19:53
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na Kenvil
Marek Uhlik:26. února 20:04

Takže jestli to chápu tak ty chceš do listboxu vypsat jen věci v uvozovkách že ? Tudíž první co jsme zapomněl napsat že je třeba přidat using System.Text.Re­gularExpressi­ons kde se nachází Regex atd....
Když upravím to co si poslal, tak by to mohlo vypadat nějak takhle:

private void btn_Load_Click(object sender, EventArgs e)
        {
            try
            {
                string file = System.IO.File.ReadAllText(txtPatch.Text.Trim());
                                string pattern = "\"(.*?)\"";
                                MatchCollection matches = Regex.Matches(file, pattern);
                                foreach(Match match in matches)
                                {
                                        listBox1.Items.Add(match.Groups[0].Value);
                                }
            }
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 26. února 20:04
Avatar
Kenvil
Člen
Avatar
Odpovídá na Marek Uhlik
Kenvil:26. února 22:16

Funguje to přesně jak potřebuji, můžeš mi ještě trošku osvětlit jak ten kod funguje ?

 
Nahoru Odpovědět 26. února 22:16
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na Kenvil
Marek Uhlik:27. února 14:56

No jako na tom není nic moc co vysvětlovat. Jako vysvětlovat jak to přesně funguje není třeba.Když budeš chtít tak si najdi jak fungují regulární výrazy, případně třída Regex && Match. Když to shrnu tak máš prostě nějaký text a funkce

Regex.Matches(text,vzor);

vyhledá v tom textu řetězce který splňují zadaný vzor a já si ho pouze uložím do kolekce Match a potom si ho vytáhnu z kolekce pomocí foreach

 
Nahoru Odpovědět 27. února 14:56
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.