Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 12. diel - Textové reťazce v C# do tretice - Split a Join

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Odpovedá 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 :-)

Editované
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();
       }
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?

Avatar
Alesh
Tvůrce
Avatar
Odpovedá 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. ;-)

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();
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š

Odpovedať
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...

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());

Avatar
testovani
Člen
Avatar
testovani:18.7.2022 14:58

Super

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);
Editované
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 90.