2013-09-26 5 views
0

Я возвращаю следующие десятичные значения и должен преобразовать эти значения в строку.Пользовательский формат десятичный и валютный в C#

// в процентах столбцы

столбец1: Получение значения, как 0,08 и должны отображаться в пользовательском интерфейсе, как 8,00%

// Currency столбцы

Столбец2: Получение значение 1000 должно отображаться в пользовательском интерфейсе как 1000 $

column3: Получение значения как 3000 должно отображаться в пользовательском интерфейсе, как 3000 долларов США

Возможно ли это сделать?

 String PercentageCustomFormat="{PercentageCustomFormat}"; 
    string CurrencyCustomFormat="{CurrencyCustomFormat}"; 

PercentageCustomFormat/CurrencyCustomFormat должен Contan логику, что если любой столбец возвращает нуль, оно должно отображаться как "NA".

Получение:

 String.Format("{PercentageCustomFormat}", column1); 
     String.Format("{CurrencyCustomFormat}", column2); 

Заранее спасибо

+0

Этот url на msdn должен помочь http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx – trelston

ответ

1

Да. Вам необходимо создать свою собственную реализацию IFormatProvider и ICustomFormatter и передать ее string.Format. Это будет обрабатывать пользовательские форматы на основе форматной строки вы передаете в

void Main() 
{ 
    var formatter = new CustomFormatProvider(); 
    var formattedValue = string.Format(formatter, "A format {0:PercentageCustomFormat}", 8.0m); 
} 

class CustomFormatProvider : IFormatProvider, ICustomFormatter 
{ 
    public object GetFormat(Type formatType) 
    { 
     return this; 
    } 

    public string Format(string format, object arg, IFormatProvider formatProvider){ 
    if (format == "PercentageCustomFormat") 
     return " ... your custom format ... "; 

    return arg.ToString(); 
    } 
} 
+0

Я ожидаю что-то вроде этого: String PercentageCustomFormat = "{0: P:" NA "}" ; // не уверен, что это правильно В процентахCustomFormat/CurrencyCustomFormat также должен содержать if condition logic (ie.conditional operator? :), который, если какой-либо столбец возвращает Null, должен отображаться как «NA». Как я могу это достичь? – user2580179

+0

Вы поместите логику «NA» в метод «Format» для CustomFormatProvider, установив флажок «null». Независимо от того, что вы помещаете после того, как двоеточие в строке формата - это то, что передается параметру 'format'. Попробуй и посмотри. –

0

Не могли бы вы не просто делать что-то вроде этого:.

percentageString = column1 == null ? "N/A" : String.Format("{0:P0}", column1); 
currencyString = column2 == null ? "N/A" : String.Format("{0:C0}", column2); 

Я не думаю, что потребуется поставщик пользовательский формат Вот.

Смежные вопросы