Avatar
Libor Šimo (libcosenior):

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ý:
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:

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ý:

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):

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
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):

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ý:

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ý:

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):

Š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ý:

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ý:

...
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
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ý:

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

 
Nahoru Odpovědět 22.8.2015 17:20
Avatar
Nahoru Odpovědět 22.8.2015 17:49
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
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ý:

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):

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
 
Nahoru Odpovědět 22.8.2015 18:06
Avatar
Odpovídá na Jan Vargovský
Libor Šimo (libcosenior):

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ý:

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.