Sto tentando di creare una combinazione generica di formattatore/parser.Parsing stringa formattata
Scenario di esempio:
- Ho una stringa per string.Format(), ad esempio
var format = "{0}-{1}"
- Ho una matrice di oggetto (stringa) per l'input, ad es.
var arr = new[] { "asdf", "qwer" }
- Sto formattando la matrice utilizzando la stringa di formato, ad es.
var res = string.Format(format, arr)
Quello che sto cercando di fare è di riportare indietro la stringa formattata nella matrice di oggetto (stringa). Qualcosa come (pseudo codice):
var arr2 = string.Unformat(format, res)
// when: res = "asdf-qwer"
// arr2 should be equal to arr
Qualcuno ha esperienza nel fare qualcosa del genere? Sto pensando di usare le espressioni regolari (modificare la stringa di formato originale e quindi passarla a Regex.Match per ottenere l'array) ed eseguirla per ogni segnaposto nella stringa di formato. È fattibile o esiste un'altra soluzione più efficiente?
Quanto dura la stringa non formattata? –
@Chris: entro limiti ragionevoli. ATM, sto solo usando questo su nomi di file. –
Nota che con la generalità fornita, i risultati potrebbero essere ambigui, ad es. 'format = '{0} - {1}'' e 'arr = {" as-df "," qw-er "}'. Potrebbe non essere formattato in tre modi diversi. È necessario definire come gestire le ambiguità o limitare il contenuto della stringa di formato e il valore. – peterchen