是否可以在字符串格式参数上指定某种标志或修饰符以使其小写或大写?
我想要的示例:
String.Format("Hi {0:touppercase}, you have {1} {2:tolowercase}.", "John", 6, "Apples");
想要的输出:
Hi JOHN, you have 6 apples.
PS:是的,我知道我可以在以字符串格式使用参数之前更改参数的大小写,但我不想要这个。
最佳答案
只有填充和对齐格式......所以简单的方法就像你说的那样,使用 "John".ToUpper()
或 "John".ToLower()
.
另一种解决方案是创建自定义 IFormatProvider
,以提供所需的字符串格式。
这就是 IFormatProvider
和 string.Format 调用的外观。
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.ToUpper())
{
case "U": return result.ToUpper();
case "L": return result.ToLower();
//more custom formats
default: return result;
}
}
}
调用将如下所示:
String.Format(new CustomStringFormat(), "Hi {0:U}", "John");
关于C# 字符串格式标志或修饰符到小写参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1839649/