IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Kenvil
Člen
Avatar
Kenvil:26.2.2019 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.2.2019 18:43
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na Kenvil
Marek Uhlik:26.2.2019 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.2.2019 19:42
Avatar
Kenvil
Člen
Avatar
Odpovídá na Marek Uhlik
Kenvil:26.2.2019 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.2.2019 19:44
Avatar
Kenvil
Člen
Avatar
Odpovídá na Marek Uhlik
Kenvil:26.2.2019 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.2.2019 19:53
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na Kenvil
Marek Uhlik:26.2.2019 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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
26.2.2019 20:04
Avatar
Kenvil
Člen
Avatar
Odpovídá na Marek Uhlik
Kenvil:26.2.2019 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.2.2019 22:16
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na Kenvil
Marek Uhlik:27.2.2019 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.2.2019 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.