String.Format não formatar uma String
-
12-09-2019 - |
Pergunta
Parece que String.Format não vai formatar uma string como entrada. Estou fazendo algo errado, ou é esse comportamento apenas nativa?
Input: 0,37
Isso não funciona.
string x = String.Format("{0:P}", myString)
Saída: 0,37
Este faz.
string x = String.Format("{0:P}", Convert.ToDecimal(myString))
Saída: 37,00%
Solução
Eu acredito que este é o comportamento esperado para 'formatação composite'.
O primeiro exemplo é tentar aplicar regras de formatação numéricas para uma string. Seu segundo exemplo está tentando aplicar regras de formatação numéricas para um número que pode ter posições decimais.
Consulte este artigo no MSDN para mais informações.
Outras dicas
A opção de formato que você está tentando apenas para aplicar funciona para números. Não existe o conceito de cordas inteligentes em .NET em que o CLR inspeciona a string para um tipo.
Estou fazendo algo errado, ou é esse comportamento apenas nativa?
Isso é comportamento nativa. Não é, basicamente, o trabalho de Format
para interpretar a entrada string. Format
assume que o usuário fornece os dados corretos - no seu caso, numérica de dados. Uma cadeia não é numérico, mesmo que representa ??em> um número (esta é a distinção mais importante no CS entre um valor / semântica e sua representação / sintaxe!).