文字列形式のパラメータにある種のフラグまたは修飾子を指定して小文字または大文字にすることは可能ですか?
私が欲しいものの例:
String.Format("Hi {0:touppercase}, you have {1} {2:tolowercase}.", "John", 6, "Apples");
必要な出力:
こんにちは、ジョン、りんごが6個あります。
PS:はい、文字列形式で使用する前にparamの大文字と小文字を変更できることはわかっていますが、これは必要ありません。
パディングとアラインメントの書式設定しかありません...簡単な方法は、あなたが言ったように、"John".ToUpper()
または"John".ToLower()
を使用することです。
もう1つの解決策は、カスタム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");
要するに、いいえ。私の知る限り、ソース値を修正するか、独自の_string.Format
_の代わりを使用する必要があります。カスタムカルチャを(_string.Format
_に)渡す場合は、culture.TextInfo.ToLower(s)
ではなくs.ToLower()
を使用することをお勧めします。