C#string格式标志或修饰符为小写参数

是否可以在string格式参数上指定某种标志或修饰符来使其成为小写或大写?

我想要的例子:

String.Format("Hi {0:touppercase}, you have {1} {2:tolowercase}.", "John", 6, "Apples"); 

通缉输出:

嗨,约翰,你有6个苹果。

PS:是的,我知道我可以改变参数的情况下使用它的string格式,但我不想这样。

只有填充和校对格式化…所以简单的方法就像你说的,使用"John".ToUpper()或者"John".ToLower()

另一个解决scheme可以创build一个自定义的IFormatProvider ,提供你想要的string格式。

这是如何看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"); 

总之,没有; AFAIK你不得不修复源值,或使用自己的替代string.Format 。 请注意,如果您传递的是自定义文化(到string.Format ),则可能需要使用culture.TextInfo.ToLower(s) ,而不仅仅是s.ToLower()