There's only padding and allignment formating... So the easy way is like you said, use "John".ToUpper()
or "John".ToLower()
.
Another solution could be create a custom IFormatProvider
, to provide the string format you want.
This is how will look the IFormatProvider
and the string.Format call.
public class CustomStringFormat : IFormatProvider, ICustomFormatter
{
public object GetFormat(Type formatType)
{
if (formatType == typeof(ICustomFormatter))
return this;
else
return null;
}
public string Format(string format, object arg, IFormatProvider formatProvider)
{
string result = arg.ToString();
switch (format?.ToUpperInvariant()) // culture independent
{
case "U": return result.ToUpper();
case "L": return result.ToLower();
//more custom formats
default: return result;
}
}
}
And the call will look like:
String.Format(new CustomStringFormat(), "Hi {0:U}", "John");