【问题标题】:Cascading parse级联解析
【发布时间】:2010-11-08 08:48:47
【问题描述】:

我可能有以下几种:
带小数的数字:100.90
数字 (int32) : 32
字符串:“”

我想要的是一个函数,它尝试解析为小数,如果失败,则尝试解析为 int,如果失败则为字符串。 任何具有以下功能的 C# 函数都值得赞赏。

【问题讨论】:

  • 这个函数最终会返回什么?
  • 一个格式化的货币字符串,如果成功解析为 int 或 decimal 。如果不是,那么只是字符串

标签: c# .net parsing tryparse


【解决方案1】:
public static object cascadeParse(string obj)
{
    decimal decRet;
    if (!decimal.TryParse(obj, out decRet))
    {
        int intRet;
        if (!int.TryParse(obj,  out intRet))
        {
            return obj;
        }
        else
        {
            return intRet;
        }
    }
    else
    {
        return decRet;
    }
}

但是,当传递可以解析为int 的内容时,此方法将始终返回decimal,因为ints 始终可以解析为decimal。您可能需要重新订购 TryParses 以将 int 放在第一位。

【讨论】:

    【解决方案2】:

    TryParse() 是你的朋友,但是我不明白你想要什么,因为所有有效的整数也是有效的小数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多