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()
。