String.Format не форматирует строку
-
12-09-2019 - |
Вопрос
Кажется, что String.Format не форматирует строку в качестве входных данных.Я делаю что-то не так, или это просто родное поведение?
Вход :0,37
Это не работает.
string x = String.Format("{0:P}", myString)
Выход :0,37
Это так.
string x = String.Format("{0:P}", Convert.ToDecimal(myString))
Выход :37,00 %
Решение
Я считаю, что это ожидаемое поведение для «составного форматирования».
Ваш первый пример — попытка применить правила числового форматирования к строке.Второй пример — попытка применить правила числового форматирования к числу, которое может иметь десятичные позиции.
Видеть эта статья на MSDN Чтобы получить больше информации.
Другие советы
Параметр формата, который вы пытаетесь применить, работает только для чисел.В .NET нет концепции интеллектуальных строк, в которых CLR проверяет тип строки.
Я делаю что-то не так, или это просто родное поведение?
Это родное поведение.это в принципе не работа Format
для интерпретации строкового ввода. Format
предполагает, что пользователь предоставляет правильные данные — в вашем случае числовой данные.Строка не является числовой, даже если она представляет число (это важнейшее различие в CS между значением/семантикой и его представлением/синтаксисом!).