Книга: C# 4.0: Пълното ръководство

Книгата е предназначена за широк кръг читатели, интересуващи се от програмиране на C#. Въведете кратка анотация тук
Книга: C# 4.0: Пълното ръководство
Форматиране
Секции на тази страница:
Когато данните от вградените в C# типове, като int или double, трябва да бъдат показани в четима от човека форма, трябва да формирате низово представяне от тях. Въпреки че C# автоматично предоставя формат по подразбиране за това представяне на данни, възможно е също така избраният формат да се посочи ръчно. Например в част I на тази книга видяхте, че числените данни могат да бъдат изведени във формата на избраната от вас валута. C# предоставя редица методи за форматиране на числови типове данни, включително методите Console.WriteLine(), String.Format() и ToString(). Всички тези методи използват един и същ подход за форматиране. Следователно, след като сте усвоили един от тях, можете лесно да приложите други.
Обща идея за форматиране
Форматирането се извършва с помощта на два компонента:спецификатори на форматидоставчици на формати.Точната форма на низово представяне на отделна стойност зависи от спецификатора на формат. Следователно спецификаторът на формата определя в каква четима от човека форма ще бъдат представени данните. Например, за извеждане на числова стойност в експоненциална нотация (т.е. като мантиса и експонента), се използва спецификаторът на формат E.
Като цяло, конкретният формат на стойност зависи от културните и езикови характеристики на локализацията на софтуера. Например в Съединените американски щати сумите се посочват в долари, а в страните от ЕС - в евро. Отчитане на културните и езикови различия в C#предоставят се доставчици на формати. По-специално, доставчикът на формат определя как се интерпретира спецификаторът на формат. Доставчик на формат се създава чрез внедряване на интерфейса IFormatProvider, който дефинира метода GetFormat(). Всички вградени числови типове и много други типове данни в .NET Framework имат предварително дефинирани доставчици на формати. По принцип данните могат да бъдат форматирани без да се указва конкретен доставчик на формат, така че доставчиците на формати не се обсъждат по-нататък в тази книга.
За да форматирате данни, е достатъчно да включите спецификатор на формат в метод, който поддържа форматиране. Вече обсъдихме използването на спецификатори на формати в глава 3, но си струва да преразгледаме този въпрос. Използването на спецификатори на формат се обсъжда по-долу, като се използва методът Console.WriteLine() като пример, въпреки че същият подход се прилага за други методи, които поддържат форматиране.
Следната форма на метода WriteLine() се използва за форматиране на изходни данни.
WriteLine("форматиран низ", arg0, arg1, . , argN) ;
В тази форма аргументите на метода WriteLine() са разделени със запетая, а не със знак +. Низът за форматиране се състои от следните два елемента: нормални печатаеми знаци, които се показват в оригиналната им форма, както и команди за форматиране.
Следва общата форма на командите за форматиране:
къдетоargnumе номерът на показания аргумент, започващ от нула;widthе минималната ширина на полето, аfmt еспецификатор на формат. Параметритеwidthиfmtне са задължителни. Следователно, в най-простата си форма, командата format просто указва конкретни аргументи за показване. Например командата < 0 >показва аргументаarg0,команда -аргументarg1и т.н.
Ако се срещне команда за форматиране във форматиращия низ по време на изпълнение на програмата, съответният аргумент, зададен от параметъраargnum, се замества и след това се показва. И номерът на аргумента указва конкретния аргумент, който се форматира.
Ако командата за форматиране указва параметъраfmt,, тогава данните се показват в посочения формат. В противен случай се използва форматът по подразбиране. Ако командата за форматиране указва параметъраwidth,, тогава изходните данни се допълват с интервали, за да се постигне минималната необходима ширина на полето. Акоwidthе зададено на положителна стойност, изходните данни са подравнени вдясно, докато отрицателната стойност е подравнена вляво.
Останалата част от тази глава е посветена на проблеми с форматирането и индивидуални спецификатори на формат.
Спецификатори на формата на числови данни
За числови данни са дефинирани няколко спецификатора на формат, обобщени в таблица 1. 22.4. Всеки спецификатор на формат може да включва незадължителен, но незадължителен спецификатор на точност. Така че, ако числова стойност трябва да бъде указана във формат с фиксирана точка и два знака след десетичната запетая в дробната част, тогава спецификаторът F2 служи за тази цел.
Таблица 22.4. Спецификатор на формат на числови данни