验证我的钱 [英] Validating my money

查看:72
本文介绍了验证我的钱的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在验证资金输入时遇到了一些麻烦。我从其他问题中使用了一些指针来编写一些更好的代码。以下是我用来验证输入是否为金钱的内容。

I am having some trouble validating a money input. I have used some pointers from my other questions to write some better code. The following is what I'm using to validate whether or not the input is money.

static void Main(string[] args)
{
    string myTest1 = "$1,234.56";
    string myTest2 = "$1.00";
    string myTest3 = "$1000.01";
    string myTest4 = "$1,234,567.89";

    myIsMaybeMoneyValidator Miimv = new myIsMaybeMoneyValidator();

    bool myResult1 = Miimv.isMaybeMoney(myTest1);
    bool myResult2 = Miimv.isMaybeMoney(myTest2);
    bool myResult3 = Miimv.isMaybeMoney(myTest3);
    bool myResult4 = Miimv.isMaybeMoney(myTest4);
}

public bool isMaybeMoney(object theirMaybeMoney)
{
    string myMaybeMoney = theirMaybeMoney.ToString();

    if (myMaybeMoney.StartsWith("-"))
    {
        myMaybeMoney.Remove(0, 1);
    }

    if (!myMaybeMoney.StartsWith("$"))
    {
        return false;
    }

    myMaybeMoney.Remove(0, 1);

    string[] myMaybeMoneyStringArray = myMaybeMoney.Split('.');

    string myMaybeMoneyDollars = myMaybeMoneyStringArray[0];
    string myMaybeMoneyCents = myMaybeMoneyStringArray[1];

    if (!isDollars(myMaybeMoneyDollars))
    {
        return false;
    }

    if (!isCents(myMaybeMoneyCents))
    {
        return false;
    }

    return true;
}

private bool isDollars(string theirMaybeMoneyDollars)
{
    if (!isNumber(theirMaybeMoneyDollars))
        return false;

    try
    {
        int myMaybeDollars = Convert.ToInt32(theirMaybeMoneyDollars);

        if (myMaybeDollars < 1)
            return false;

        return true;
    }
    catch (Exception)
    {
        return false;
    }

    return true;
}

private bool isCents(string theirMaybeMoneyCents)
{
    if (!isNumber(theirMaybeMoneyCents))
        return false;

    try
    {
        int myMaybeCents = Convert.ToInt32(theirMaybeMoneyCents);

        if (myMaybeCents > 99)
            return false;
        if (myMaybeCents < 1)
            return false;

        return true;
    }
    catch (Exception)
    {
        return false;
    }

    return true;
}

private bool isNumber(object theirMaybeNumber)
{
    return Microsoft.VisualBasic.Information.IsNumeric(theirMaybeNumber);
}

结果全不是钱,这让我很困惑。 p>

The results are all not money, which is pretty confusing to me.

推荐答案

好像在C#中有对钱的内置验证。

Looks like there is a builtin validation for money in C#.

float num;
bool isValid = float.TryParse(str, 
NumberStyles.Currency,
CultureInfo.GetCultureInfo("en-US"), // cached
out num);

从:
https://stackoverflow.com/a/617847/290822

这篇关于验证我的钱的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆