Справочная информация: у нас есть система, которая получает данные из другой серверной системы. Мы обрабатываем отображение этих данных, и у нас есть собственные XML-шаблоны для управления отображением определенных вещей (т. е. у нас есть собственные шаблоны столбцов, определяющие заголовки столбцов и т. д.). Одна вещь, которую мы хотели бы поддерживать, — это возможность предоставить маску для этих шаблонов столбцов, которая будет применяться к значениям, поступающим из бэкэнда. Ниже приведен сценарий, с которым у меня возникли проблемы.
Проблема: я не могу заставить работать простой строковый формат. Я хотел бы отформатировать значение STRING из четырех цифр (например, «1444») в формате времени (например, «14:44»). Я пробовал:
String.Format("{0:00:00}", "1444")
Обратите внимание на важность ввода STRING. Если я укажу значение int, формат будет работать. Причина, по которой я не могу использовать это, заключается в том, что все данные, которые мы получаем от серверной части, имеют строковый формат, и мы хотели бы, чтобы они были универсальными (поэтому кастинг на самом деле не вариант).
Под общим я подразумеваю, что я хотел бы указать маску в наших собственных шаблонах XML, например:
<MyColumnTemplate Id="MyColumn" Mask="00:00" />
и использовать эту маску в вызове строкового формата для строковых значений? Если маска не работает, мы можем просто вернуть исходное значение (как уже делает метод String.Format() по умолчанию).
Изменить. Чтобы уточнить, вот упрощенная версия того, что я хотел бы сделать в коде:
string inputValue = "1444";
string maskValueFromXml = "00:00";
string mask = "{0:" + maskValueFromXml + "}";
string myDesiredEndResult = String.Format(mask, inputValue);