这就是我到目前为止所做的事情
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 |新南威尔士州| VIC |昆士兰州| SA | WA | TAS |
第一位:0 | 2 | 3 | 4 | 5 | 6 | 7 |
答案 0 :(得分:1)
答案 1 :(得分:1)
Regular expressions可用于验证帖子代码:
Regex postCodeValidation = new Regex(@"^[0234567]\d{4}$");
if (postCodeValidation.Match(post_code).Success)
{
// Post code is valid
}
else
{
// Post code is invlid
}
请注意:在上面的代码中,邮政编码被视为5位数(要更改长度 - 您需要在正则表达式模式中替换4
[0234567]\d{4}
有适当的号码。)
答案 2 :(得分:1)
我不确定状态是否也是您的四字符邮政编码包含状态的一部分。但如果没有,你可以这样做:
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>)
...
我认为这是一种学习练习。
答案 3 :(得分: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;
}
另一个,没有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
如果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]);
}