Function 检查输入字符-Pascal

Function 检查输入字符-Pascal,function,validation,character,pascal,Function,Validation,Character,Pascal,我正在尝试编写一段代码,它将允许我验证一个字母数字ID号,其中包含大写和小写字母以及数字 因为它的大小是固定的,所以我没有问题隔离每个部分(即分别检查大写部分、小写部分和数字部分),但是我在检查大写和小写字母方面有问题 我已经阅读了IsUpper和IsLower函数,但是在我的程序中实现它时遇到了困难。这是最有效的方式还是有更简单的路线 我使用的是Pascal(免费PascalIDE),要验证的示例输入是Abc123 谢谢 编辑: Program CheckChar; VAR UserID,

我正在尝试编写一段代码,它将允许我验证一个字母数字ID号,其中包含大写和小写字母以及数字

因为它的大小是固定的,所以我没有问题隔离每个部分(即分别检查大写部分、小写部分和数字部分),但是我在检查大写和小写字母方面有问题

我已经阅读了
IsUpper
IsLower
函数,但是在我的程序中实现它时遇到了困难。这是最有效的方式还是有更简单的路线

我使用的是Pascal(免费PascalIDE),要验证的示例输入是
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.
有:

函数ISISLEtterOrdGitString(S:string):布尔值;
开始
对于索引:=1到长度do
开始
如果不是TCharacter.IsleterOrdigit(S[Index]),则
开始
结果:=假;
出口
结束;
结束;
结果:=真;
结束;

只需检查每个字母所包含的字符集,就可以轻松完成此操作(借用Martin Prikryl的基本函数结构,但使用Free Pascal的“退出”语法):

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

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]),而不是检查
s[i]
LC\u-LETTERS
UC\u-LETTERS

中,您可以显示您尝试了什么吗?好的……我尝试了类似的方法,但我为要检查的每组字符创建了一个类型定义。它不起作用。我会试试这条路线的运气,看看是否行得通。谢谢@AbdullahZameek你的问题没有说明你尝试了什么,也没有问为什么这种方法失败了。在这种情况下,您不希望尝试为范围定义不同的数据类型,然后查看输入是否以某种方式与数据类型对齐。您不知道输入字符的范围,因此需要对照已知的常量范围进行检查。我用这种例子更新了我的答案。如果您认为我的答案可以接受,请单击“接受”复选标记表示接受。这是我的错误,我的程序与您的解决方案几乎相同,只是我已将字母和数字指定为常量定义中的类型定义。对不起,我对StackExchange系统还很陌生,仍在努力适应:)非常感谢!我已经用修改后的代码编辑了我的问题(修改内容是,将类型更改为CONST)@AbdullahZameek你现在有新问题吗?如果是这样,那么你应该打开一个新的。
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;