Kurzusok
/
C#
C#
/
Feladatok
/
Középiskolai szerelmek
Középiskolai szerelmek

Középiskolai szerelmek

Tanulófeladat

Bevezetés

Stringek formázása

Két fő mechanizmus létezik a stringek formázására a C#/.NET-ben: a String.Format() használata és a string-interpoláció.

Összetett formázás

A String.Format() egy stringet (a dokumentációban összetett formátum) fogad, amely rögzített szövegből és helyőrzőkből (a dokumentációban formátumelemek), valamint változó számú argumentumból áll. A visszatérési érték a megfelelő argumentum felhasználásával feloldja az egyes formátumelemeket, majd a feloldott értékeket összefűzi a rögzített szöveggel.

string.Format("I had {0} bitcoins on {1}, the day I forgot my password.", 55.5, new DateTime(2010, 2, 25));
// => "I had 55.5 bitcoins on 2/25/2010 00:00:00, the day I forgot my password." - US settings

Ezt a mechanizmust szaknyelven összetett formázásnak nevezik.

String-interpoláció

Az interpolált stringeket egy $ előtag jelöli, és kapcsos zárójelbe zárt futásidejű kifejezéseket tartalmaznak. A formátumelem szintaxisa a következő: $"{<interpolationExpression>}". Ezek feleslegessé teszik a külön argumentumlista szükségességét. Az eredmény funkcionálisan egyenértékű a String.Format() mechanizmussal.

var loadsOf = 55.5;
var thatDay = new DateTime(2010, 2, 25);
$"I had {loadsOf} bitcoins on {thatDay}, the day I forgot my password."
// => "I had 55.5 bitcoins on 2/25/2010 00:00:00, the day I forgot my password." - US settings

Formátumelemek

A kapcsos zárójelben lévő szöveget formátumelemnek nevezzük: az összetett formátumnál ez helyőrző, a string-interpolációnál pedig interpolált kifejezés.

Egy formátumelem legfeljebb 3 részből állhat. Az első a kötelező kifejezés vagy argumentum-helyőrző, ahogyan a fenti példakódban is látható. Emellett létezik egy opcionális igazítás (amit egy vessző, „,” vezet be) és egy opcionális formátumstring (amit egy kettőspont, „:” vezet be).

{<interpolationExpression>[,<alignment>][:<formatString>]}

Az igazítás megadja annak a „mezőnek” a hosszát, amelybe a szöveg kerül: ha az igazítás pozitív, a szöveg bal oldalán, ha negatív, a jobb oldalán egészül ki szóközökkel.

A formátumstring a szöveges kimenet alakját határozza meg: például azt, hogy egy számnál legyenek-e ezres elválasztók, vagy hogy egy DateTime objektumnak csak a dátumrésze jelenjen-e meg.

A következő kód egy DateTime objektum dátumrészének és egy lebegőpontos számnak az exponenciális alakban való megjelenítését mutatja be.

var loadsOf = 55.5;
var thatDay = new DateTime(2010, 2, 25);
$"I had {loadsOf:E} bitcoins on {thatDay:d}, the day I forgot my password."
// => I had 5.550000E+001 bitcoins on 02/25/2010, the day I forgot my password. - US settings

string.Format(
    "I had {0:E} bitcoins on {1:d}, the day I forgot my password.",
    loadsOf, thatDay)
// => I had 5.550000E+001 bitcoins on 02/25/2010, the day I forgot my password. - US settings

A számok és a dátumok esetében is létezik szabványos és egyéni formázás. Nincs lényeges különbség az egyéni és a szabványos között, csak annyi, hogy az egyéni formátumstringeket formátumbetűkből állíthatod össze.

Kultúra

Minden szálnak van egy alapértelmezett kultúrája, a Thread.CurrentThread.CurrentCulture, amelyet egy CultureInfo példány foglal magába. A szál kultúrája határozza meg, hogyan formázódnak a dátumok és a számok a regionális eltérések figyelembevételével, például az Egyesült Királyság DD/MM/YYYY és az Egyesült Államok MM/DD/YYYY szokásos dátumformátuma közötti különbség esetén.

A CultureInfo megvalósítja az IFormatProvider interfészt, amely átadható a String.Format() bizonyos túlterheléseinek. Ezzel felülírható a szál kultúrája.

Szó szerinti stringek

A szó szerinti stringek lehetővé teszik a többsoros stringeket. Egy @ jel vezeti be őket.

string str = @"
See no wretched
quotes everywhere
";

Utasítások

Ebben a feladatban segítesz a középiskolás szerelmeseknek, hogy nyilvánosan vállalják a szerelmüket a közösségi médiában.

1. Jelenítsd meg a pár nevét egy szívvel elválasztva

Készítsd el a statikus HighSchoolSweethearts.DisplaySingleLine() metódust, amely két nevet vesz át, és azokat egy szívvel elválasztva jeleníti meg. A formázott szöveg 61 karakter széles legyen, a szív pedig a string közepén legyen.

Minden név biztosan bőven belefér a sor szélességébe.

HighSchoolSweethearts.DisplaySingleLine("Lance Green", "Pat Riley");
// => "                  Lance Green ♡ Pat Riley                    "

2. Jelenítsd meg a pár kezdőbetűit egy ascii art szívben

Készítsd el a statikus HighSchoolSweethearts.DisplayBanner() metódust, amely a két kezdőbetű-készletet egy plusz jellel elválasztva jeleníti meg.

HighSchoolSweethearts.DisplayBanner("L. G.", "P. R.");
// see the ascii art below
     ******       ******
   **      **   **      **
 **         ** **         **
**            *            **
**                         **
**     L. G.  +  P. R.     **
 **                       **
   **                   **
     **               **
       **           **
         **       **
           **   **
             ***
              *

3. Gondoskodj róla, hogy a német cserediákok otthon érezzék magukat a területi beállításra érzékeny deklarációkkal.

Készítsd el a statikus HighSchoolSweethearts.DisplayGermanExchangeStudents() metódust, amely megmutatja a német cserediákjaink kapcsolatának kezdetét és annak időtartamát.

HighSchoolSweethearts.DisplayGermanExchangeStudents("Norbert", "Heidi", new DateTime(2019, 1, 22), 1535.22f);
// => "Norbert and Heidi have been dating since 22.01.2019 - that's 1.535,22 hours"
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
C# Exercism

Készen állsz elkezdeni a(z) Középiskolai szerelmek feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) C# nyelvet 62 fogalom178 feladat segítségével, valódi emberi mentorálással, mindez ingyen.