检查输入字符 - Pascal

时间:2016-01-22 14:55:19

标签: function validation character pascal

我试图编写一段代码,允许我验证包含大写和小写字母以及数字的字母数字ID号。

由于它的大小固定,我没有问题隔离每个部分(即大写部分,小写部分和数字部分需要单独检查),但我在检查大写和小写字母时遇到问题。 / p>

我已阅读IsUpperIsLower函数,但我在我的程序中难以实现它。这是最有效的方式还是更容易的路线?

我使用Pascal(免费Pascal IDE)并且要验证的示例输入将是Abc123

谢谢!

编辑:

Program CheckChar;

VAR
UserID, LCase, UCase, Num : String;
readkey : char;
L  : Integer;


CONST
Upper = ['A'..'Z'];
Lower = ['a'..'z'];
 Int   = ['0'..'9'];

Begin
Write('Enter UserID ');Readln(UserID);
Ucase := Copy(UserID,1,1);
LCase := Copy(UserID,2,1);
Num   := Copy(UserID,3,2);
L     := Length(UserID);

  While L = 6 Do
  Begin
    IF not (Ucase in Upper) or (Lcase in Lower) or (Num in Int) then
    Begin
 Writeln('Invalid Input');
 End;
Else
 Writeln('Valid Input');
 Else
  Writeln('Invalid Length);

  End;

 readln(readkey);
  End.

2 个答案:

答案 0 :(得分:0)

TCharacter.IsLetterOrDigit

function IsIsLetterOrDigitString(S: string): Boolean;
begin
  for Index := 1 to Length(S) do
  begin
    if not TCharacter.IsLetterOrDigit(S[Index]) then
    begin
      Result := False;
      Exit;
    end;
  end;

  Result := True;
end;

答案 1 :(得分:0)

您也可以通过检查每个字母所包含的字符集来轻松完成此操作(借用Martin Prikryl的基本功能结构,但使用Free Pascal的“退出”语法):

function IsAlphaNumericString(s: string): boolean;
var
  i: integer;
begin
  for i:= 1 to length(s) do
    if not (s[i] in ['a'..'z','A'..'Z','0'..'9']) then
      exit(false);

  exit(true);
end;

如果您愿意,还可以为各种范围定义常量:

function IsAlphaNumericString(s: string): boolean;
const
  LC_LETTERS = ['a'..'z'];
  UC_LETTERS = ['A'..'Z'];
  NUMERALS = ['0'..'9'];
var
  i: integer;
begin
  for i:= 1 to length(s) do
    if not ((s[i] in LC_LETTERS) or (s[i] in UC_LETTERS) or (s[i] in NUMERALS)) then
      exit(false);
{ Or equivalently:
    if not (s[i] in LC_LETTERS)) and
       not (si[i] in UC_LETTERS) and
       not (s[i] in NUMERALS) then
      exit(false);
}
  exit(true);
end;

您也可以只有一个字母范围,例如LETTERS = ['a'..'z']并检查ToLower(s[i]) in LETTERS,而无需检查s[i]LC_LETTERS中的UC_LETTERS