正規表現の使用:
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]);
}