正規表現に頭を悩ませるのに苦労しました。次のコードでは、正規表現を使用して、渡されたデータが 1 ~ 3 桁の数字であるかどうかを判断しています。この式は、データが数字で始まる場合 (例: "200") に機能しましたが、データの最初の桁に文字が含まれていない場合 (例: "3A5") にも渡されました。メソッドでなんとかエラーを処理できましたINT32.TryParse()
が、もっと簡単な方法があるはずです。
if (LSK == MainWindow.LSK6R)
{
int ci;
int length = SP_Command.Length;
if (length > 3) return MainWindow.ENTRY_OUT_OF_RANGE; //Cannot be greater than 999
String pattern = @"[0-9]{1,3}"; //RegEx pattern for 1 to 3 digit number
if (Regex.IsMatch(SP_Command, pattern)) //Does not check for ^A-Z. See below.
{
bool test = Int32.TryParse(SP_Command, out ci); //Trying to parse A-Z. Only if
if (test) //it no letter will it succeed
{
FlightPlan.CostIndex = ci; //Update the flightplan CI
CI.Text = ci.ToString(); //Update the Init page
}
else return MainWindow.FORMAT_ERROR; //It contained a letter
}
else return MainWindow.FORMAT_ERROR; //It didn't fit the RegEx
}