Próbuję utworzyć ogólną kombinację formater/parser.Parsowanie sformatowanego ciągu
Przykład scenariusz:
- mam string.Format łańcuch znaków) (na przykład
var format = "{0}-{1}"
- Mam tablicę obiektu (ciąg) dla danych wejściowych, np.
var arr = new[] { "asdf", "qwer" }
- Formatuję tablicę za pomocą ciągu formatów, np.
var res = string.Format(format, arr)
Co staram się zrobić, to wrócić sformatowany ciąg z powrotem do tablicy obiektów (string). Coś jak (pseudo kod):
var arr2 = string.Unformat(format, res)
// when: res = "asdf-qwer"
// arr2 should be equal to arr
Ktoś ma doświadczenie w robieniu czegoś takiego? Zastanawiam się nad użyciem wyrażeń regularnych (zmodyfikuj oryginalny ciąg formatu, a następnie przekaż go do Regex.Matches, aby uzyskać tablicę) i uruchom go dla każdego elementu zastępczego w ciągu formatu. Czy jest to możliwe, czy jest jakieś inne bardziej wydajne rozwiązanie?
Jak długo ciąg jest niesformatowany? –
@Chris: w rozsądnych granicach. ATM, używam tego tylko na nazwach plików. –
Należy pamiętać, że podana ogólność wyniki mogą być niejednoznaczne - np. 'format = '{0} - {1}'' i 'arr = {" as-df "," qw-er "}'. Może być niesformatowana na trzy różne sposoby. Musisz zdefiniować sposób radzenia sobie z niejasnościami lub ograniczyć zawartość ciągu formatu i wartości. – peterchen