NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!

Diskuze – Lekce 12 - Textové řetězce v C# do třetice - Split a Join

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá na Čus Peťan
Petr Šenfeld:26.6.2020 15:21

asi hodně pozdní odpověď ale myslím, že by to mělo jít po této úprávě:

string[] znak = s.Split('?');

  • bych smazal, není potřeba splitovat slovo a už vůbec ne podle '?'

string morseuvZnak = "";

  • bys měl doplnit "?", jinak pokud znak nenajde tak nic nedoplní.

zzp += morseuvZnak.ToCha­rArray();

  • bych předělal na zzp += (morseuvZnak + " ");

mohu se mýlit, taky se vzdělávám :-)

Editováno 26.6.2020 15:23
 
Odpovědět
26.6.2020 15:21
Avatar
Zdeněk Dvorský:14.12.2020 17:08

Překlad do Morseovky po mém :-)

// zjistím pozici znaku v datovém typu string
       static int PoziceZnaku(string znaky, char c)
       {
           int pozice = 0;
           for (int j = 0; j < znaky.Length; j++)
           {
               if (c == znaky[j])
               {
                   pozice = j;
                   break;
               }
               else
                   pozice = 0;
           }
           return pozice;
       }
       static void Main(string[] args)
       {
           string s = "morseova abeceda"; //string k překladu
           Console.WriteLine(s);
           s = s.ToLower(); //převod na malá písmena
           string[] preklad = new string[s.Length]; //pole pro ukládáni morseovych znaků
           // definované znaky
           string abecedniZnaky = "abcdefghijklmnopqrstuvwxyz";
           string[] morseovyZnaky = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
                   "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-",
                   "...-", ".--", "-..-", "-.--", "--.."};
           char odelovac = ','; //použití v konečném výpisu (pro oddělení znaků)
           int i = 0; //iterace překládaných znaků
           int j = 0; //iterace nedefinovaných znaků

           //průchod vetou pro překlad po znacích
           foreach (char c in s)
           {
               if (abecedniZnaky.Contains(c)) //kontrola zda je znak definován
               {
                   int index = PoziceZnaku(abecedniZnaky, c); //nešel použít IndexOf() - proto použita vlastní metoda
                   preklad[i] = morseovyZnaky[index];
                   if ((i+1) < (s.Length - j)) //ve výpise chci oddělit jednotlivé znaky ',' - za posledním znakem oddělovač nechci
                       Console.Write("{0}{1}", preklad[i], odelovac);
                   else
                       Console.Write("{0}", preklad[i]);
                   i++;
               }
               else
                   j++; //pokud není definovaný
           }
           Console.WriteLine();
           Console.ReadKey();
       }
 
Odpovědět
14.12.2020 17:08
Avatar
Tereza Kalivodová:15.4.2021 21:50

Mám dotaz k StringSplitOp­tions.RemoveEm­ptyEntries. V článku píšete, že musíme první parametr předávat jako pole, tedy:
string[] znaky = s.Split(new char[]{' '}, StringSplitOp­tions.RemoveEm­ptyEntries);
ale mě funguje i tento zápis:
string[] znaky = s.Split((' '), StringSplitOp­tions.RemoveEm­ptyEntries);
Proč to tedy komplikovat, když funguje jednoduchá verze?

 
Odpovědět
15.4.2021 21:50
Avatar
Alesh
Tvůrce
Avatar
Odpovídá na Tereza Kalivodová
Alesh:15.4.2021 23:56

Pokud se nepletu, tak ten druhý zápis je možný až od vyšší verze .NET, doma ti to fungovat bude, ale tady ne, schválně si vyzkoušej obě možnosti v některé z těch konzolí v článku, kde se demonstruje nějaký kód. Prostě do toho klikni, kód pak můžeš libovolně upravovat. Čili pak bacha, pokud to bude ve cvičeních k této lekci, tak zapisovat jedině tím prvním způsobem. ;-)

 
Odpovědět
15.4.2021 23:56
Avatar
Vaclav Klimes:2.6.2021 9:29

Ahoj, můžete mně někdo pomoci pochopit, co dělám špatně? Níže uvedený kód při běžném spuštění (F5) se zastaví na prvním řádku s chybou "System.NullRe­ferenceExcepti­on: Odkaz na objekt není nastaven na instanci objektu.", ale při krokovém (F11) bez obtíží funguje..Moc díky.

string[] pozice = lokace.message.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
                    place = pozice[0];
                    popis = pozice[2];
                    nazev = pozice[1];
                    for (int i = pozice.Length - 1; i > 2; i--)
                        smery += pozice[i] + " ";
                    Console.WriteLine("Můžeš jít na {0}", smery);
                    Console.WriteLine("Zadej příkaz: ");
                    choice = Console.ReadLine().ToLower().Trim();
 
Odpovědět
2.6.2021 9:29
Avatar
Luboš Marvan:29.10.2021 9:30

Ahoj,
v úvodu je pojednání o metodách First(), Last(), IndexOf() stejných na polích a stringu. Mě ale připadá, že IndexOf() není. Ve stringu volám metodu na proměnné (instanci), zatímco u pole to volám na třídě Array a proměnná pole je jako parametr.
Nebo dělám někde chybu?
Luboš

Odpovědět
29.10.2021 9:30
Jsi tam, kde jsou tvoje myšlenky
Avatar
Eva Šimerková:21.11.2021 17:54

Chybí mi zde řešení úkolu na program, který zakóduje řetězec do morseovky...

 
Odpovědět
21.11.2021 17:54
Avatar
Ladislav SKOKAN:2.1.2022 15:55

pokud někomu nefunguje IndexOff, zkuste upravit druhý parametr
index = Array.IndexOf(a­becedniZnaky, vstup[i].ToStrin­g());

 
Odpovědět
2.1.2022 15:55
Avatar
testovani
Člen
Avatar
testovani:18.7.2022 14:58

Super

 
Odpovědět
18.7.2022 14:58
Avatar
David Suchomel:16.9.2022 23:56

Miluju Morseovku. Tady moje řešení do Morseovky

string doMorseovky = "ahoj svete";
Console.WriteLine("Původní zpráva: {0}", doMorseovky);
string morseovaZprava = "";
string abecedniZnaky = "abcdefghijklmnopqrstuvwxyz";
string[] morseovyZnaky = { ".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.." };
//zakodujeme do moresovky
foreach (var znak in doMorseovky)
{
  string morZnak = " ";
  int index = abecedniZnaky.IndexOf(znak, 0);
  if (index >= 0)
    morZnak = morseovyZnaky[index];
  morseovaZprava += morZnak + ' ';
}
Console.WriteLine("Zakódovaná zpráva: {0}", morseovaZprava);
Editováno 16.9.2022 23:58
 
Odpovědět
16.9.2022 23: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 10 zpráv z 90.