2009-04-20 3 views
6

Кажется, что String.Format не будет форматировать строку в качестве ввода. Я что-то делаю неправильно, или это просто обычное поведение?String.Format не форматирует строку

Ввод: 0.37

Это не работает.

string x = String.Format("{0:P}", myString) 

Выход: 0,37

Это делает.

string x = String.Format("{0:P}", Convert.ToDecimal(myString)) 

Выход: 37,00%

ответ

9

Я считаю, что это ожидаемое поведение для 'составного форматирования'.

Ваш первый пример - применить цифровые правила форматирования к строке. Второй пример - применить численные правила форматирования к числу, которое может иметь десятичные позиции.

Для получения дополнительной информации см. this article on MSDN.

2

Опция формата, которую вы пытаетесь применить, работает только для чисел. В .NET нет понятия интеллектуальных строк, в которых CLR проверяет строку для типа.

2

Я делаю что-то не так, или это просто обычное поведение?

Это родное поведение. В основном это не задание Format для интерпретации ввода строки. Format предполагает, что пользователь поставляет правильные данные - в вашем случае, числовые данные. Строка не является числовой, даже если она представляет номер (это важное различие в CS между значением/семантикой и его представлением/синтаксисом!).

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

  • Нет связанных вопросов^_^