Válí se ti projekty v šuplíku? Dostaň je mezi lidi a získej cool tričko a body na profi IT kurzy v soutěži ITnetwork summer 2017!
Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)

Diskuze: Dá sa za pomoci String.Format() vytvoriť tabuľka?

C# .NET .NET (C# a Visual Basic) Dá sa za pomoci String.Format() vytvoriť tabuľka? American English version English version

Aktivity (1)
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ý
Redaktor
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  +1 21.8.2015 23:16
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Jan Vargovský
patrik.valkovic: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ý
Redaktor
Avatar
Odpovídá na patrik.valkovic
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  +1 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ý
Redaktor
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
patrik.valkovic
Šéfredaktor
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ý
Redaktor
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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět 22.8.2015 12:52
Avatar
Jan Vargovský
Redaktor
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ý
Redaktor
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
Nahoru Odpovědět 22.8.2015 16:57
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jan Vargovský
Redaktor
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ý
Redaktor
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ý
Redaktor
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ý
Redaktor
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ý
Redaktor
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.