String.Format non formatta una stringa
-
12-09-2019 - |
Domanda
Sembra che String.Format non formatterà una stringa come input.Sto facendo qualcosa di sbagliato o è solo un comportamento nativo?
Ingresso:0,37
Questo non funziona.
string x = String.Format("{0:P}", myString)
Produzione :0,37
Questo sì.
string x = String.Format("{0:P}", Convert.ToDecimal(myString))
Produzione :37,00%
Soluzione
Credo che questo è il comportamento previsto per 'la formattazione composita'.
Il primo esempio è il tentativo di applicare le regole di formattazione numerica in una stringa. Il tuo secondo esempio è il tentativo di applicare le regole di formattazione numerica per un numero che può avere posizioni decimali.
questo articolo su MSDN per più informazioni.
Altri suggerimenti
L'opzione di formato che si sta tentando di applicare funziona solo per i numeri. Non esiste il concetto di stringhe intelligenti in .NET in cui il CLR ispeziona la stringa per un tipo.
Sto facendo qualcosa di sbagliato o è solo un comportamento nativo?
Questo è un comportamento nativo.Fondamentalmente non è compito di Format
per interpretare l'input di stringa. Format
presuppone che l'utente fornisca i dati corretti – nel tuo caso, numerico dati.Una stringa non è numerica, anche se rappresenta un numero (questa è la distinzione più importante in CS tra un valore/semantica e la sua rappresentazione/sintassi!).