级联解析

发布于 2024-10-01 14:52:02 字数 150 浏览 6 评论 0原文

我可能有以下类型:
带小数的数字:100.90
数量(int32):32
String : ""

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

I may have the following types:
Number with decimal : 100.90
Number (int32) : 32
String : ""

What I want is a function which tries to parse as a decimal and if it fails, then tries to parse as an int and if that fails then its a string.
Any sort of function in C# which has the following functionality is appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

も星光 2024-10-08 14:52:02
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,因为 int 始终可以解析为 十进制。您可能需要重新排序 TryParse 以将 int 放在第一位。

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;
    }
}

However this method will always return a decimal when passed something that can be parsed as an int as ints can always be parsed as decimal. You may want to re-order the TryParses to put the int one first.

镜花水月 2024-10-08 14:52:02

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

TryParse() is your friend, however I don't understand what you want as all valid ints are also valid decimals.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文