Turbo Pascal:检查字符串是否包含数字

时间:2016-09-30 17:59:14

标签: string if-statement pascal turbo-pascal

正如它在标题中所说的那样,我无法找到解决方法来检查字符串PW是否包含数字。如果字符串PW包含数字,我如何签入TP?

repeat
        writeln;
        writeln('Ok, please enter your future password.');
        writeln('Attention: The Text can only be decoded with the same PW');
        readln(PW);
        pwLength:= Length(PW);
        error:=0;
          for i:= 1 to Length(PW) do begin
            if Input[i] in ['0'..'9'] then begin
            error:=1;
            end;
          end;

           if Length(PW)=0 then
           begin
           error:=1;
           end;

            if Length(PW)>25 then
            begin
            error:=1;
            end;

        if error=1 then
        begin
        writeln('ERROR: Your PW has to contain at least 1character, no numbers and has to be under 25characters long.');
        readln;
        clrscr;
        end;

      until error=0;

1 个答案:

答案 0 :(得分:2)

这就是我编写代码的方式:

Error

这些是需要注意的一些事项:

  • 请勿使用相同的错误代码值来表示不同类型的错误。对不同的错误使用相同的值会使您调试代码变得更加困难,因为您无法确定哪个测试给if error = 3 ...值1。

  • 定义常量以表示不同类型的错误。这样,读者就不必怀疑Break

  • 中的“3意味着什么”
  • 一旦您在密码中检测到数字字符,就无法检查其后的字符,因此for循环中的Unclassified

  • 如果我是一名用户,我会很生气,直到程序告诉我我做错了之后才被告知规则是什么。事先告诉使用 规则是什么。

  • 实际上,最好包含一个值为-1的额外常量Error,并通过为其分配Error = Unclassified来开始循环的每次迭代,并且后续步骤,测试PWIsOk而不是case

  • $app->get('/{:token}', function ($req, $res){ // Do Something }); 语句是一种基于序数值选择多个互斥执行路径之一的整洁且易于维护的方式。