Hledáš dárek, který neskončí v koši? Nyní 90 % extra kreditů ZDARMA s promo kódem PREKVAPENI90. Zjisti více:
NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Diskuze – Lekce 15 - Textové řetězce v Javě 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
Nejnovější komentáře jsou na konci poslední stránky.
Avatar
Lubor Pešek
Člen
Avatar
Lubor Pešek:3.12.2015 12:32

a jak bys chtěl aby to fungovalo?

Odpovědět
Existují dva způsoby, jak vyřešit problém. Za prvé vyhoďte počítač z okna. Za druhé vyhoďte okna z počítače.
Avatar
roman64
Tvůrce
Avatar
Odpovídá na Tomas Hlinovsky
roman64:3.12.2015 16:46

Ahoj. Možná tito bude jasnější s touto iterací:

public static void main(String[] args) {
        String retez = "Ahoj jak se máš?";
        int i;
        for (i=0; i<retez.length();i++)
            System.out.println(retez.substring(0,i));
    }
Odpovědět
Definice šílenství je dělat stejnou věc znovu a znovu a očekávat jiné výsledky.“ Albert Einstein.
Avatar
Tomáš Kamlar:6.12.2015 16:32

moje verze pro opětovné zakodování zprávy do Moseovy abecedy :)

String zprava2 = "";

       for (char abecedniZnak : zprava.toCharArray())
        {
           int index = -1;
           String znak = " ";
            for (int i = 0; i < abecedniZnaky.length(); i++)
                {
                    if (abecedniZnaky.charAt(i) == abecedniZnak)
                        {
                        index = i;
                        }
                }
            if (index >=0)
                {
                    znak = morseovyZnaky[index];
                }
            zprava2 += znak + " ";
        }
       System.out.printf("Znovu zakodovaná zpráva: %s\n", zprava2);
Avatar
Miroslav Bejlek:14.9.2016 17:15

Ahoj,
mám dotaz pro spojování řetězců mohu použít buď plus nebo příkaz concat().
String s1, s2, s3;
s3 = s1 + s2; nebo
s3 = s1.concat(s2)

dotaz mám v čem je rozdíl, podle mne je to stejné, pak nechápu proč tu speciální metodu vůbec zaváděli, tak si říkám, že asi nějaký rozdíl v tom bude, prosím řekněte mi jaký :-)

Děkuji :-)

Avatar
Dalibor Kužma:24.11.2016 19:59

viete mi povedať prečo môj prekladač koktá? Tu je kód:

Scanner sc = new Scanner (System.in, "Windows-1250");
        System.out.println("Vitajte v prekladači do Morseovky!");
        System.out.println("Vložte text na preklad:");
        String s = sc.nextLine();
        String preklad = "";
        String[] abeceda = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
        String[] mAbeceda = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
"..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-",
"...-", ".--", "-..-", "-.--", "--.."};
        String[] text = s.split("");
        for ( String aZnak : text){
            String mZnak = "?";
            int index = -1;
            for (int i =0; i < abeceda.length; i++){
                if (abeceda[i].equals(aZnak)){
                    index = i;
                }
            if (index >= 0){
                mZnak = mAbeceda[index];
            }
            preklad += mZnak + " ";
            }

        }
        System.out.printf("Preložený text je: \n %s\n", preklad);
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Dalibor Kužma
pocitac770:24.11.2016 21:59

Chyba je v této části kódu, zkus nad tím zapřemýšlet ;)

for (int i =0; i < abeceda.length; i++){
        if (abeceda[i].equals(aZnak)){
                index = i;
        }
        if (index >= 0){
                mZnak = mAbeceda[index];
        }
        preklad += mZnak + " ";
}
Avatar
Odpovídá na pocitac770
Dalibor Kužma:25.11.2016 22:06

pocitac770 Ďakujem prišiel som na to. Problém bol v zátvorke :).

Avatar
gcx11
Tvůrce
Avatar
gcx11:26.4.2017 22:14

Doplnil bych, že metoda split nebere jako parametr řetězec, ale regulární výraz.

Například rozdělení řetěžce na věty podle tečky nebude fungovat:

String text = "Dobrý den. Jmenuje se Jan Novák a učím se Javu. Docela mi to jde.";
String[] parts = text.split(".");
for (String s: parts){
      System.out.println(s);
 }

Napřed se musí upravit řetězec, aby nebyl brán jako regulární výraz:

String text = "Dobrý den. Jmenuje se Jan Novák a učím se Javu. Docela mi to jde.";
String[] parts = text.split(Pattern.quote("."));
for (String s: parts){
      System.out.println(s);
 }

Třída Pattern je z balíčku java.util.regex

Editováno
Avatar
Radka Jánská:14.9.2017 23:56

Tak musím říci, že dekoder morseovky se povedl, ale seděla jsem u toho 2 hodiny čistého času! Zítra si to musím porovnat s Vaším řešením. Ze začátku jsem se zacyklila na tom, že jsem opět chtěla bezmyšlenkovitě použít metodu split() - kdo by se nad tím v deset večer zamýšlel ... teprve postupnou analýzou mi došlo, že nemám potřebný separátor a vzpomněla jsem si ze starších tutoriálů na metodu toCharArray() ... pak jen vybojovat porovnávání znaků ... nefunguje equals, ale operátor == (pomohl strýček google) a řešení je na světě :-) děkuji za tohle mozkové cvičení, nevím, jestli jsem našla nejelegantnější řešení, ale hlavně, že jsem ho našla :-)

Avatar
Maroš Škumát:12.10.2017 20:56

Neviete mi niekto povedať kde mám chybu ?

Scanner sc = new Scanner(System.in,"Windows-1250");
        System.out.println("Zvoľte si operáciu");
        System.out.println("1 - preklad do morseovej abecedy");
        System.out.println("2 - preklad z morseovej abecedy");
        byte voľba = Byte.parseByte(sc.nextLine());
        String[] abeceda = {"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"};
        String[] mAbeceda = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....",
        "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-",
        "...-", ".--", "-..-", "-.--", "--.."};
        String sprava = "";
        String znak = "";
        int index = -1;
        switch(voľba)
        {
            case 1:
                System.out.println("Napíšte správu na preloženie: ");
                String preklad1 = sc.nextLine();
                preklad1 = preklad1.trim();
                preklad1 = preklad1.toLowerCase();
                String[] Preklad = preklad1.split("");
                for(String preklad : Preklad)
                {
                    for(int i = 0; i < abeceda.length; i++)
                    {
                        if(abeceda[i].equals(preklad))
                        {
                            index = i;
                        }
                        if(index > 0)
                        {
                        znak = mAbeceda[index];
                        }
                        }
                sprava += znak;
                }
                System.out.println("Dekódovaná správa: " + sprava);
                break;
Nejnovější komentáře jsou na konci poslední stránky.
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 128.