Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 验证我的钱_C#_Validation_Numbers_Currency - Fatal编程技术网

C# 验证我的钱

C# 验证我的钱,c#,validation,numbers,currency,C#,Validation,Numbers,Currency,我在验证资金输入时遇到一些问题。我使用了其他问题中的一些指针来编写更好的代码。下面是我用来验证输入是否是钱的内容 static void Main(string[] args) { string myTest1 = "$1,234.56"; string myTest2 = "$1.00"; string myTest3 = "$1000.01"; string myTest4 = "$1,234,567.89"; myIsMaybeMoneyValid

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

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);
}
static void Main(字符串[]args)
{
字符串myTest1=“$1234.56”;
字符串myTest2=“$1.00”;
字符串myTest3=“$1000.01”;
字符串myTest4=“$1234567.89”;
myIsMaybeMoneyValidator Miimv=新的myIsMaybeMoneyValidator();
bool myResult1=Miimv.isMaybeMoney(myTest1);
bool myResult2=Miimv.isMaybeMoney(myTest2);
bool myResult3=Miimv.isMaybeMoney(myTest3);
bool myResult4=Miimv.isMaybeMoney(myTest4);
}
公共资产可能是货币(反对他们的货币)
{
字符串myMaybeMoney=theirMaybeMoney.ToString();
if(myMaybeMoney.StartsWith(“-”)
{
myMaybeMoney.Remove(0,1);
}
如果(!myMaybeMoney.StartsWith($))
{
返回false;
}
myMaybeMoney.Remove(0,1);
字符串[]myMaybeMoneyStringArray=myMaybeMoney.Split('.');
字符串myMaybeMoneyDollars=myMaybeMoneyStringArray[0];
字符串mymaybemonencents=myMaybeMoneyStringArray[1];
如果(!isDollars(myMaybeMoneyDollars))
{
返回false;
}
如果(!isCents(mymaybemonencents))
{
返回false;
}
返回true;
}
私有bool-isDollars(将它们的rmaybemoneydollars串起来)
{
如果(!isNumber(他们的货币))
返回false;
尝试
{
int myMaybeDollars=Convert.ToInt32(它们的rmaybemoneydollars);
如果(myMaybeDollars<1)
返回false;
返回true;
}
捕获(例外)
{
返回false;
}
返回true;
}
私有文件(字符串他们的MyMemoneycents)
{
如果(!isNumber(他们的名字))
返回false;
尝试
{
int myMaybeCents=Convert.ToInt32(它们的mybemonycents);
如果(myMaybeCents>99)
返回false;
如果(myMaybeCents<1)
返回false;
返回true;
}
捕获(例外)
{
返回false;
}
返回true;
}
私有bool isNumber(对象的名称)
{
返回Microsoft.VisualBasic.Information.IsNumeric(他们的MyByEnumber);
}

结果都不是钱,这让我很困惑。

看起来C#中有一个内置的钱验证

发件人: 试试看
decimal.TryParse(myTest4,NumberStyles.Currency,新文化信息(“en-US”),out myResult4)
只需使用:

float value;
bool isMoney= float.TryParse(str, 
    NumberStyles.Currency,
    CultureInfo.GetCultureInfo("en-US"),
    out value);

如果你想知道你的代码出了什么问题,可能是Microsoft.VisualBasic.Information.IsNumeric(他们的名字);不处理逗号。

什么是myIsMaybeMoneyValidator?定义在哪里?正在等待正则表达式解决方案。。。还有,你为什么不使用正则表达式呢?我打赌美元有很多很好的例子。你需要学习正则表达式。我收回我以前的说法,似乎C有一个内置的货币函数。为什么C已经处理了itRegEx,而使用凌乱的正则表达式可能是这里的解决方案。。如果表达式包含以+或-字符开头的有效数值表达式或包含逗号,则IsNumeric也会返回True。
float value;
bool isMoney= float.TryParse(str, 
    NumberStyles.Currency,
    CultureInfo.GetCultureInfo("en-US"),
    out value);