È possibile utilizzare la soluzione di AakashM. Se volete qualcosa di un po 'più leggibile, è possibile creare il proprio provider:
internal class RatioFormatProvider : IFormatProvider, ICustomFormatter
{
public static readonly RatioFormatProvider Instance = new RatioFormatProvider();
private RatioFormatProvider()
{
}
#region IFormatProvider Members
public object GetFormat(Type formatType)
{
if(formatType == typeof(ICustomFormatter))
{
return this;
}
return null;
}
#endregion
#region ICustomFormatter Members
public string Format(string format, object arg, IFormatProvider formatProvider)
{
string result = arg.ToString();
switch(format.ToUpperInvariant())
{
case "RATIO":
return (result == "0") ? result : "1:" + result;
default:
return result;
}
}
#endregion
}
Con questo fornitore, è possibile creare stringhe di formato molto leggibili:
int ratio1 = 0;
int ratio2 = 200;
string result = String.Format(RatioFormatProvider.Instance, "The first value is: {0:ratio} and the second is {1:ratio}", ratio1, ratio2);
Se controlli la classe in fase di formattazione (piuttosto di uno primitivo come Int32), puoi renderlo più bello. Vedi this article per maggiori dettagli.
fonte
2009-06-24 14:03:06
Grazie per le risposte fino ad ora. Vorrei sottolineare che so che potrei fare alcune formattazioni condizionali come suggerito, ma in realtà ho bisogno di una stringa di singolo formato - ad esempio per applicare a un'intera colonna di dati. – user7239