2010-01-22 3 views
1

У меня есть класс, и я хочу воспроизвести функциональность, связанную с ToString("0.0000"), а также с некоторыми другими числами форматирования. Как это может быть сделано?C# IFormatable ToString («0.0000»)

+2

Внедряя 'IFormattable' и записывая метод, который анализирует строку формата и записывает вывод ... была ли более конкретная проблема? –

+0

Я надеялся, что это можно сделать без регулярных выражений. Мне было интересно, был ли какой-то внутренний класс или что-то, что «0.0000» было преобразовано или что-то в этом роде. – Ames

+1

Существует класс под названием 'System.Number', который имеет различные методы форматирования для примитивных типов, но он является внутренним, и все методы отмечены как' [MethodImpl (MethodImplOptions.InternalCall)] '. Посмотрите, используя Reflector, если вы хотите узнать больше. – Rory

ответ

0

Регулярные выражения, вероятно, лучший выбор.

+0

Damnit. Это был мой страх. Спасибо, что подтвердил это. – Ames

+0

Любые конкретные причины, по которым вы пытаетесь избежать RegEx? – Rory

+0

Этот вопрос касается форматирования, а не разбора. Regex неуместно. –

1
class MyNumber : IFormattable 
{ 
    decimal value; 
    public MyNumber(decimal value) 
    { this.value = value; } 

    string IFormattable.ToString(string format, IFormatProvider formatProvider) 
    { return value.ToString(format, formatProvider); } 

    public string ToString(string format) 
    { return ((IFormattable)this).ToString(format, System.Globalization.CultureInfo.CurrentCulture); } 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     MyNumber num = new MyNumber(3.1415926m); 
     Console.WriteLine(num.ToString("0.0000")); 
     Console.WriteLine("{0:0.0000}", num); 
    } 
} 
Смежные вопросы