C# 字符串格式标志或修饰符到小写参数

标签 c# string formatting

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

我想要的示例:

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/

相关文章:

c# - 枚举器问题,有什么办法可以避免两个循环?

c# - c#中的SelectList类是什么?

c# - 常量字符串声明/初始化断点

c# - 如何检查阿拉伯/波斯字符是否为小写?

c# - 设计翻译 API - 如何处理空格

linux - 在 bash 中使用列

c# - 我们可以在 SQL Server 2016 Express 或更高版本上运行 SSIS 包吗

ruby-on-rails - 将数组数组转换为字符串数组

vb.net - 将字符串转换为 HTML 文档

java - 如何配置避免加入 Javadoc 行的 Eclipse Java 格式?