如何检查字符串是否遵循美国货币的格式?

时间:2019-01-27 11:21:15

标签: c#

我正在解决一个问题,希望我从用户处获取字符串输入,并通过一种方法检查该字符,以检查每个字符以查看其是否遵循美国货币的格式。它必须是方法中使用的字符串。金额可以是从1美元到一千美元之间的任何值,但必须输入$ x.xx,$ xx.xx,$ xxx.xx格式,只要用户输入的金额与上述格式一致即可,我的程序应该输出其“有效”的其他任何东西都是“无效格式”的输出。第一个字符必须为'$',并且我不能使用正则表达式。

我得到用户输入,然后使用.NullOrWhiteSpace对其进行验证。然后将保存用户输入的字符串值发送到我创建的方法中。从这一点上我不知道如何继续。我已经尝试过.ToCharArray,我也尝试过编写冗长而复杂的if语句,并且我已经研究了几个小时,但找不到可靠的方式写出来。

 class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("enter amount between $1.00 and $1000.00");
        string valueUS = Console.ReadLine();
        while (string.IsNullOrWhiteSpace(valueUS))
        {
            Console.WriteLine("Please enter in an amount");
            valueUS = Console.ReadLine();
        }

        currencyChecker(valueUS);

    }

    public static string currencyChecker(string currencyString)
    {

        char[] currencyArray;
        currencyArray = currencyString.ToCharArray();
        for (int i = 0; i < currencyArray.Length; i++)
        {

            if (currencyArray[0] == '$')
            {

            }

        }
        return currencyString;

下面的方法应该检查用户输入的每个字符,并验证它是否与上述美国货币模式匹配,并输出其“有效”的其他任何内容都应报告为“无效”

1 个答案:

答案 0 :(得分:4)

通常,您将对此类内容使用正则表达式。 一个简单的正则表达式为^\$\d+.\d\d$。基本上,这意味着字符串应以$符号开头,最后应有一个数字,一个点和另外两个数字。

但是,这可以不使用正则表达式而完成,并且由于它看起来像是一项家庭作业,因此我将向您介绍正确的方向。

因此,您需要测试以$开头的字符串,右侧第3个字符为.,其他所有字符均为数字。

您的方法应返回一个表示有效/无效结果的布尔值-因此您应该执行以下操作:

 static bool IsCurrency(string currency)
 {

     // Check if the string is not null or empty - if not, return false

     // check if the string is at least 5 chars long, since you need  at least $x.xx - if not, return false

     // Check if the first char is $ - if not, return false

     // Check if the 3rd char from the end is . - if not, return false

     // check if all the other chars are digits - if not, return false


     // If all checks are valid -
     return true;
 }

请注意,测试的顺序至关重要,例如,如果您检查右边的第3位数字是.,然后再检查至少5位数字,则可能会尝试检查一个字符串只有2位数长,并且会例外。

由于这是(可能是)家庭作业,因此我将把代码编写部分留给您,因此您实际上将从中学到一些东西。