Я пытаюсь создать общую комбинацию форматировщика/парсера.Форматирование строки форматирования
Пример сценария:
- У меня есть строка для string.Format(), например,
var format = "{0}-{1}"
- У меня есть массив объектов (строка) для ввода, например.
var arr = new[] { "asdf", "qwer" }
- Я форматирую массив, используя строку формата, например.
var res = string.Format(format, arr)
То, что я пытаюсь сделать, это вернуть обратно отформатированную строку обратно в массив объекта (строки). Что-то вроде (псевдо-код):
var arr2 = string.Unformat(format, res)
// when: res = "asdf-qwer"
// arr2 should be equal to arr
У кого-нибудь есть что-то подобное? Я думаю об использовании регулярных выражений (изменить исходную строку формата, а затем передать ее в Regex.Matches для получения массива) и запустить ее для каждого заполнителя в строке формата. Возможно ли это или есть другое более эффективное решение?
Как долго строка, которая неформатируется? –
@ Крис: в разумных пределах. ATM, я использую это только для имен файлов. –
Обратите внимание, что с учетом общего характера результаты могут быть неоднозначными - например, 'format = '{0} - {1}'' и 'arr = {" as-df "," qw-er "}'. Не может быть отформатирован тремя способами. Вам нужно определить, как справляться с неопределенностями, или ограничить содержание строки формата и значения. – peterchen