-5

それは私がこれまでにやったことです

     Console.Write("Enter your post code >");
        post_code = Console.ReadLine();
        if (string.IsNullOrEmpty(post_code))
        {
            Console.WriteLine("Please enter correct data");
            return;
        }

        else if (post_code.Length != 4)
        {
            Console.WriteLine("Please enter correct data");
            return;
        }

必要なもの:-最初の桁は1、8、または9であってはなりません。-最初の桁は、次の表に従って状態と一致する必要があります。

状態:NT | NSW | VIC | QLD | SA | WA | TAS |

1桁目:0 | 2 | 3 | 4 | 5 | 6 | 7 |

4

4 に答える 4

1

正規表現を見てください:http://msdn.microsoft.com/fr-fr/library/system.text.regularexpressions.regex.aspxそれはあなたが必要とするものです:)

于 2012-08-10T09:46:50.813 に答える
1

州があなたの 4 文字の郵便番号に州も含まれているかどうかはわかりません。しかし、そうでない場合は、次のようにすることができます。

Dictionary<string,string> statePostCodeMap = new Dictionary<string,string>();

// Populate the dictionary with state codes as key and post code first character as value

if(!post_code.StartsWith(statePostCodeMap([NameOfVariableThatHoldsState])){
// Incorrect post code
}

編集:ユーザーのコメントに基づく:

次に使用できるのは次のとおりです。

if !((string.Compare(state, "NT", true) == 0 && post_code.StartsWith("0"))){
// Incorrect Data
}
else if(<similar condition for other values>)
...

これはある種の学習演習だと思います。

于 2012-08-10T09:55:15.137 に答える
1

正規表現を使用して、郵便番号を検証できます。

    Regex postCodeValidation = new Regex(@"^[0234567]\d{4}$");
    if (postCodeValidation.Match(post_code).Success)
    {
        // Post code is valid
    }
    else
    {
        // Post code is invlid
    }

注意4: 上記のコードでは、郵便番号は 5 桁と見なされます (長さを変更するには、正規表現パターン [0234567]\d{4}を適切な数字に置き換える必要があります)。

于 2012-08-10T09:52:27.797 に答える
1

正規表現の使用:

using System;
using System.Text.RegularExpressions;

namespace PostCodeValidator
{
    class Program
    {
        static void Main(string[] args)
        {
            var regex = new Regex(@"^[0234567]{1}\d{3}$");
            var input = String.Empty;

            while (input != "exit")
            {
                input = Console.ReadLine();
                Console.WriteLine(regex.IsMatch(input));
            }
        }
    }
}

非正規表現ソリューション:

    static bool ValidPostCode(string code)
    {
        if (code == null || code.Length != 4)
        {
            return false;
        }
        var characters = code.ToCharArray();
        if (characters.Any(character => !Char.IsNumber(character)))
        {
            return false;
        }
        if ("189".Contains(characters.First()))
        {
            return false;
        }
        return true;
    }

もう 1 つ、LINQ なし:

    static bool SimpleValidPostCode(string code)
    {
        if (code == null || code.Length != 4)
        {
            return false;
        }
        if ("189".Contains(code[0]))
        {
            return false;
        }
        for (var i = 1; i < 4; i++)
        {
            if (!"123456789".Contains(code[i]))
            {
                return false;
            }
        }
        return true;
    }

I only can do it with : if, if … else, if … else if … else constructs Nested ifs CASE and switch constructs

loop が許可された言語構造のリストにない場合forでも、次のことを試すことができます。

    static bool SimpleValidPostCode(string code)
    {
        if (code == null || code.Length != 4)
        {
            return false;
        }
        if (code[0] == '1') return false;
        if (code[0] == '8') return false;
        if (code[0] == '9') return false;

        return "0123456789".Contains(code[1]) && "0123456789".Contains(code[2]) && "0123456789".Contains(code[3]);            
    }
于 2012-08-10T09:57:21.750 に答える