Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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
Libor Šimo (libcosenior):21.8.2015 22:13

Povedzme, že mám v kolekcii viac riadkov po 3 stringy, napríklad typ, názov, farba. Jednotlivé stringy majú rôznu veľkosť a chcel by som ich vypísať v cykle do tabuľky. (maximálne veľkosti stringov: typ - 10, názov - 25, farba - 15)
Dá sa na to použiť String.Format()?
Ak áno, poradíte?

Odpovědět
21.8.2015 22:13
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:21.8.2015 23:16
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using static System.Console;

public static class RandomExtensions
{
    private static string alphabet;

    static RandomExtensions()
    {
        StringBuilder sb = new StringBuilder();
        for (int i = 'a'; i <= 'z'; i++)
            sb.Append((char)i);
        alphabet = sb.ToString();
    }

    private static IEnumerable<char> GetRandomStringInternal(this Random random, int length)
    {
        if (length < 0)
            throw new ArgumentException("length is negative.", nameof(length));

        while (length-- > 0)
            yield return alphabet[random.Next(alphabet.Length)];
    }

    public static string GetRandomString(this Random random, int length)
    {
        return new String(random.GetRandomStringInternal(length).ToArray());
    }
}

internal class Program
{
    [STAThread]
    private static void Main(string[] args)
    {
        var r = new Random();
        WriteLine($"{"Typ",-10}|{"Nazev",-25}|{"Barva",-15}");
        for (int i = 0; i < 10; i++)
            WriteLine($"{r.GetRandomString(r.Next(11)),-10}|{r.GetRandomString(r.Next(26)),-25}|{r.GetRandomString(r.Next(16)),-15}");
    }
}

Snad stačí jako demo :)

 
Nahoru Odpovědět
21.8.2015 23:16
Avatar
Odpovídá na Jan Vargovský
Patrik Valkovič:21.8.2015 23:28

Páni, že se C#6 uchytí tak brzy jsem nečekal :)
Jinak tento zápis stringu jde samožrejmě přepsat i do string.Format, formátování by mělo zůstat zachováno.

Nahoru Odpovědět
21.8.2015 23:28
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Patrik Valkovič
Jan Vargovský:21.8.2015 23:42

V práci to používat nemůžu, tak se vyblbnu tady aspoň :D

 
Nahoru Odpovědět
21.8.2015 23:42
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):22.8.2015 7:57

Bože, prečo musí byť všetko také zložité?
Ja to potrebujem do funkcie ToString(), ale najskôr sa na to vykašlem, aj tak tomu kódu veľmi nerozumiem.

Nahoru Odpovědět
22.8.2015 7:57
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:22.8.2015 11:15

Znáš string formát?

 
Nahoru Odpovědět
22.8.2015 11:15
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):22.8.2015 12:43

Prave ze neviem ako to funguje.
return String.Format(" {0,10} {1,20} {2,30} ", " retazec1", "retazec2", " retazec3");
Neviem co robi to druhe cislo v {}.

Nahoru Odpovědět
22.8.2015 12:43
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Nahoru Odpovědět
22.8.2015 12:51
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:22.8.2015 12:52

Zarovná doprava na určitou délku. S mínusem to zase zarovná doleva a dodá white space doprava.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
22.8.2015 12:52
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:22.8.2015 12:52

Zarovná doprava na určitou délku. S mínusem to zase zarovná doleva a dodá white space doprava.

 
Nahoru Odpovědět
22.8.2015 12:52
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):22.8.2015 16:47

Škoda že to tak nefunguje na stringy.

public override string ToString()
        {
            return String.Format("{0,20} |",Inventurne);
        }
Nahoru Odpovědět
22.8.2015 16:47
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:22.8.2015 16:48

Ale funguje, jen má každý znak jinou šířku.

 
Nahoru Odpovědět
22.8.2015 16:48
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):22.8.2015 16:57

A to je ako možné?

Nahoru Odpovědět
22.8.2015 16:57
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:22.8.2015 17:01

...
AAA

Těžko říct... Prostě takhle je ten font udělaný, nastav si tam nějaký (např. Consolas myslím), který má znaky stejné šířky.

Editováno 22.8.2015 17:01
 
Nahoru Odpovědět
22.8.2015 17:01
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):22.8.2015 17:19

Ten tam mám prednastavený.

Nahoru Odpovědět
22.8.2015 17:19
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:22.8.2015 17:20

Ten co je na obrázku rozhodně není Consolas.

 
Nahoru Odpovědět
22.8.2015 17:20
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):22.8.2015 17:49

A čo mám nastaviť v options?

Nahoru Odpovědět
22.8.2015 17:49
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):22.8.2015 17:50

Myslím ktorú položku?

Nahoru Odpovědět
22.8.2015 17:50
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:22.8.2015 17:50

Font nastavuješ na komponentě. VS nastavení s tím nemá nic společného.

 
Nahoru Odpovědět
22.8.2015 17:50
Avatar
Nahoru Odpovědět
22.8.2015 17:53
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):22.8.2015 18:01

Super, tak predsa je to jednoduché. :-D

Nahoru Odpovědět
22.8.2015 18:01
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:22.8.2015 18:06

Nikdo neříkal, že je to těžké :)

 
Nahoru Odpovědět
22.8.2015 18:06
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):22.8.2015 18:11

To nie, ale tvoj kód na začiatku je predsa len trochu zložitejší ako zmeniť font. ;-)

Nahoru Odpovědět
22.8.2015 18:11
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jan Vargovský:22.8.2015 18:14

To jo, ale tebe zajímal jen jeden řádek. Ta omáčka okolo, bylo abych nemusel psát statické data, které chci zobrazit.

 
Nahoru Odpovědět
22.8.2015 18:14
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 25 zpráv z 25.