【问题标题】:How to convert Boolean type into "ON" "OFF" using String.Format如何使用 String.Format 将布尔类型转换为“ON”“OFF”
【发布时间】:2011-06-03 02:31:53
【问题描述】:

有什么方法可以使用字符串格式化程序将布尔类型转换为“ON”/“OFF”,例如:

Dim inpValue as Boolean
Dim outValue = String.Format("0:ON;OFF", inpValue)
' should show OFF as output

没有代码或 IFormatProvider?

【问题讨论】:

    标签: vb.net formatting conditional string-formatting


    【解决方案1】:

    这是来自another question 的一个疯狂技巧,但它完全不可读。我强烈建议你不要这样做!如果您有紧张的性格,请立即停止阅读。

    String.Format("{0:ON;ON;OFF}", CDbl(inpValue)) 
    

    这会将Boolean 转换为-10,然后使用custom numeric format

    【讨论】:

      【解决方案2】:

      c# - 不是最优雅但最有效的:

      字符串 outValue = inpValue.ToString().Replace("False", "OFF").Replace("True", "ON");

      【讨论】:

      • 我的眼睛在流血!字符串操作是一种非常糟糕的逻辑实现。
      • 毫无疑问(我承认)。对不起你的眼睛!
      • VB 的 IIf 的 C# 等价物: var outValue = inpValue ? “开”:“关”;
      【解决方案3】:

      您无法使用 String.Format 执行此操作(不实现 IFormatProvider,这对于您的目的来说似乎有点过头了),但您可以使用 IIf 在一行中执行此操作:

      IIf(inpValue, outValue=True, outValue=False)
      

      我个人建议使用 If/Else 语句而不是 IIf,因为 IIf 对于一些来自其他语言的程序员来说并不直观。

      【讨论】:

        【解决方案4】:

        有什么问题:

        Dim inpValue as Boolean
        Dim outValue = If(inpValue, "ON", "OFF")
        

        【讨论】:

          【解决方案5】:

          据我所知,没有任何内置支持。但是,根据您的控制程度,您可以创建自己的格式提供程序 (IFormatProvider)。这是一个讨论的链接:bool format provider

          【讨论】:

            【解决方案6】:
            猜你喜欢
            • 2012-03-12
            • 1970-01-01
            • 2016-03-04
            • 1970-01-01
            • 2021-07-29
            • 1970-01-01
            • 2011-03-22
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多