Sztringinterpoláció megoldásának áttekintése
Az alábbi kód az előző leckéből származó kihívás egyik lehetséges megoldása.
string customerName = "Ms. Barros";
string currentProduct = "Magic Yield";
int currentShares = 2975000;
decimal currentReturn = 0.1275m;
decimal currentProfit = 55000000.0m;
string newProduct = "Glorious Future";
decimal newReturn = 0.13125m;
decimal newProfit = 63000000.0m;
Console.WriteLine($"Dear {customerName},");
Console.WriteLine($"As a customer of our {currentProduct} offering we are excited to tell you about a new financial product that would dramatically increase your return.\n");
Console.WriteLine($"Currently, you own {currentShares:N} shares at a return of {currentReturn:P}.\n");
Console.WriteLine($"Our new product, {newProduct} offers a return of {newReturn:P}. Given your current volume, your potential profit would be {newProfit:C}.\n");
Console.WriteLine("Here's a quick comparison:\n");
string comparisonMessage = "";
comparisonMessage = currentProduct.PadRight(20);
comparisonMessage += String.Format("{0:P}", currentReturn).PadRight(10);
comparisonMessage += String.Format("{0:C}", currentProfit).PadRight(20);
comparisonMessage += "\n";
comparisonMessage += newProduct.PadRight(20);
comparisonMessage += String.Format("{0:P}", newReturn).PadRight(10);
comparisonMessage += String.Format("{0:C}", newProfit).PadRight(20);
Console.WriteLine(comparisonMessage);
Ez a kód csupán "egy lehetséges megoldás", mert sok függ attól, hogyan döntött a logika implementálásáról. Ha a modulban tárgyalt technikákat használtad karakterláncok formázására, kitöltésére és így tovább, és a kimenet megfelel a kihívás kimenetének, akkor jól teljesítettél!
Dear Ms. Barros,
As a customer of our Magic Yield offering we are excited to tell you about a new financial product that would dramatically increase your return.
Currently, you own 2,975,000.00 shares at a return of 12.75%.
Our new product, Glorious Future offers a return of 13.13%. Given your current volume, your potential profit would be $63,000,000.00.
Here's a quick comparison:
Magic Yield 12.75% $55,000,000.00
Glorious Future 13.13% $63,000,000.00
Ha sikerült, gratulálunk!
Megoldás részletei
Ezt a szakaszt folytathatja annak magyarázatáért, hogy az adott megoldás hogyan oldja meg ezt a kihívást.
Szánjon egy percet a megoldáskód áttekintésére.
Elkezdheti lebontani a megoldást, és először megoldhatja az üdvözlő és a nyitó bekezdés megírását a terminálba. Az alábbi kód sztringinterpolációval oldja meg a megszólítás
Dear Ms. Barros,megjelenítését. Most már ismernie kell a mintátConsole.WriteLine($"Your text {yourVariable}");:string customerName = "Ms. Barros"; Console.WriteLine($"Dear {customerName},");A kód kimenete a következő:
Dear Ms. Barros,Tekintse át újra a minta teljes megoldását. A megoldás első fele sztring interpolációval jeleníti meg az első bekezdés egyes részeit.
Megjegyzés:
Összetett formázás, például
Console.WriteLine("Dear {0},", customerName)egy másik lehetséges megoldás.A megoldás második része megjeleníti az összehasonlító táblázatot, miközben egy hosszú szöveget épít fel lépésről lépésre, szöveg összefűzéssel, összetett formázással, formátumjelölőkkel (százalék és pénznem), és
string.Format()valamintPadRight()használatával.Az alábbi kód a táblázat első sorát hozza létre, és a sztring minden egyes lépése után hozzáadja a
Console.WriteLine()elemet.string currentProduct = "Magic Yield"; int currentShares = 2975000; decimal currentReturn = 0.1275m; decimal currentProfit = 55000000.0m; string comparisonMessage = ""; comparisonMessage = currentProduct.PadRight(20); Console.WriteLine(comparisonMessage); comparisonMessage += String.Format("{0:P}", currentReturn).PadRight(10); Console.WriteLine(comparisonMessage); comparisonMessage += String.Format("{0:C}", currentProfit).PadRight(20); Console.WriteLine(comparisonMessage);Az alábbi mintakimenet bemutatja, hogyan épül fel az összehasonlító táblázat első sora három lépésben.
Magic Yield Magic Yield 12.75% Magic Yield 12.75% $55,000,000.00
Ha nem sikerült elvégeznie ezt a feladatot, érdemes lehet áttekinteni az előző egységeket, mielőtt továbblép.