Diskuze: C# string ůkol
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, moc ti nerozumím, abych byl upřímný. Potřebuješ aby program převedl format 1A2B na ABB nebo format ABB na format 1A2B?
Potřebuji přesně ten první případ tedy formát 1A2B na ABB.
Máš nějaký teoreticky nápad, jak to zrealizovat? Ještě otázka, to číslo je v rozmezí 1 až 9 včetně, nebo to může být i vyšší?
Teoretický nápad by byl, ale hledám někoho kdo by ho dokázal převést do praxe. Může být i vyšší.
Skrz substring:
string zadani = "2X4Y10Z";
int i = 0;
while (i < zadani.Length)
{
int start = i;
while (Char.IsDigit(zadani[i])) i++;
int pocet = int.Parse(zadani.Substring(start, i - start));
Console.Write(new string(zadani[i++], pocet));
}
Parsování hned:
string zadani = "2X4Y10Z";
int i = 0;
while (i < zadani.Length)
{
int pocet = zadani[i] - '0';
while (Char.IsDigit(zadani[++i]))
{
pocet *= 10;
pocet += zadani[i] - '0';
}
Console.Write(new string(zadani[i++], pocet));
}
Kdyžtak to označ jako řešení, jestli už nic nemáš
string zadani = "2X4Y10Z";
Console.WriteLine(
string.Join("", new Regex(@"(\d+)(.)").Matches(zadani).Cast<Match>().
Select((Match m) => new string(m.Groups[2].Value[0], int.Parse(m.Groups[1].Value)))
)
);
new Regex(@"(\d+)(.)")
.Matches(zadani)
.OfType<Match>()
.ToList()
.ForEach(m => Console.Write(new string(m.Groups[2].Value[0], int.Parse(m.Groups[1].Value))));
Co tohle?
Zobrazeno 12 zpráv z 12.