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%

È stato utile?

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!).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top