Delphi开发技巧:字符串的相关判断

某一字符是否在字符串中

    本实例是用AnsiMidstr()函数获取指定字符串中的单个字符,也可以获取指定长度的子字符串。运行结果如图5.10所示。

Delphi开发技巧:字符串的相关判断 - Meng - 曾经很傻很天真
图5.10  判断某一字符是否在字符串中

    主要代码如下:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i,p:Integer;
    begin
     if (Edit1.Text='')or(Edit2.Text='') then
     begin
       ShowMessage('请把信息添全。');
     end
     else
     begin
      if Length(Edit2.Text)=1 then
      begin
        p:=Length(Edit1.Text);
        for i:=1 to p do
        begin
          if Trim(Edit2.Text)=AnsiMidstr(Edit1.Text,i,1) then
          begin
            Label4.Caption:='在字符串中';
            break;
          end
          else
          begin
            Label4.Caption:='不在字符串中';
          end;
         end;
       end
       else
         ShowMessage('字符只能是单个字符。');
     end;
    end;

    字符串是由数字、大写字母或小写字母组成

    本实例是用StrToInt()函数来判断字符串是否由数字组成,当字符串不能由StrToInt()函数进行转换时,在异常处理中用Uppercase()和Lowercase()函数来判断字符串是由大写字符串还是小写字符串组成。运行结果如图5.11所示。

Delphi开发技巧:字符串的相关判断 - Meng - 曾经很傻很天真
图5.11  判断字符串是由数字、大写字母或小写字母组成

    主要代码如下:
    procedure TForm1.Button1Click(Sender: TObject);
    var
     Isstr : String;
    begin
     Isstr := Edit1.Text;
    try
     StrToInt(Isstr);
     ShowMessage('由数字组成!');
    except
     if Isstr=Uppercase(Isstr) then
      ShowMessage('由大写字母组成!')
     else
      if Isstr=Lowercase(Isstr) then
       ShowMessage('由小写字母组成!')
      else
         ShowMessage('无法识别,可能是混杂型。')
    end;
    end;

    字符串中的某一字符是否大写

    本实例先用Ansiuppercase()函数将要查找的字符串转换成大写,然后用AnsiMidstr()函数在字符串中进行查找。运行结果如图5.12所示。

Delphi开发技巧:字符串的相关判断 - Meng - 曾经很傻很天真
图5.12  判断字符串中的某一字符是否大写

    主要代码如下:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      s,x:String;
      i:Integer;
    begin
      s:=Ansiuppercase(Trim(Edit2.Text));
      for i:=1 to Length(Trim(Edit1.Text)) do
      begin
         if Ansiuppercase(Trim(Edit2.Text))=AnsiMidstr(trim(Edit1.Text),i,1) then
         begin
           Label3.Caption:='有';
           break;
         end
         else
           Label3.Caption:='没有';
      end;
    end;

    字符串中是否有小写字母

    本实例是用length ()函数来获取字符串的总长度,再用自定义函数IsLower()对字符串中的每个字符进行判断,如果是小写字母,则返回True。运行结果如图5.13所示。

Delphi开发技巧:字符串的相关判断 - Meng - 曾经很傻很天真
图5.13  判断字符串中是否有小写字母

    主要代码如下:
    procedure TForm1.Button1Click(Sender: TObject);
    var
     s : String;
     n,i,islow : Integer;
    begin
     islow := 0;
     s := Edit1.Text;
     n := Length(s);
     for i:=0 to n-1 do
      if IsLower(s[i]) then
      begin
        islow := 1;
        break;
      end;
     if islow>0 then
      ShowMessage('该字符串中有小写字母')
     else
      ShowMessage('该字符串中没有小写字母');
    end;

    字符串中是否有指定的字符

    本实例是用pos()函数来获取字符在字符串中的位置,如果返回的数字大于0,则表示该字符串中包含指定的字符,如果返回值为0,则不包含。运行结果如图5.14所示。

Delphi开发技巧:字符串的相关判断 - Meng - 曾经很傻很天真
图5.14  判断字符串中是否有指定的字符

    主要代码如下:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     if pos(Edit2.Text,Edit1.Text)=0 then
      ShowMessage('没有指定的字符')
     else
      ShowMessage('字符串中包含字符'+Edit2.Text);
    end;

    字符是否可以转换成整数

    本实例是用StrToIntDef()函数来判断字符串是否为整数,如果字符串是整数,那么StrToIntDef(s,0)和StrToIntDef(s,1)将返回转换后的整数,如果字符串不是整数, StrToIntDef(s,0)将返回0,StrToIntDef(s,1)将返回1。运行结果如图5.15所示。

Delphi开发技巧:字符串的相关判断 - Meng - 曾经很傻很天真
图5.15  判断字符是否可以转换成整数

    主要代码如下:
    function TForm1.IsIntStr(const S: String): Boolean;
    begin
     if StrToIntDef(S,0)=StrToIntDef(S,1) then
      Result:=True
     else
      Result:=False;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     if IsIntStr(Edit1.Text) then
      ShowMessage('可以转换成整数')
     else
      ShowMessage('不可以转换成整数');
    end;

    字符中是否有汉字

    本实例是用Length()函数来获取字符串的长度,用Ord()函数来获取每个字符的ASCII码,当ASCII码的值大于$7F时,表示该字符是汉字的前一个字节,并用Copy()函数来获取当前的汉字。运行结果如图5.16所示。

Delphi开发技巧:字符串的相关判断 - Meng - 曾经很傻很天真
图5.16  判断字符中是否有汉字

    主要代码如下:
    procedure TForm1.Button1Click(Sender: TObject);
    var
     str,s,sj: String;
     i: integer;
    begin
     str := trim(Edit1.Text);
     i := 0;
     while i< Length(str) do
     begin
      if ord(str[i]) > $7F then
      begin
       s := Copy(str,i,2);
       sj :=sj+ '"'+s+'"';
       i := i+2;
      end
      else  i:=i+1;
     end;
     Label2.Caption := '在字符串中含有汉字'+sj;
    end;

    字符中是否有双字节

    中文所用的字符全是双字节字符,英文所用的字节全是单字节字符,也就是mbSingleByte。本实例是用ByteType()函数返回字符串指定位置上的字符,如果不是mbSingleByte,则表示为双字节字符。运行结果如图5.17所示。

Delphi开发技巧:字符串的相关判断 - Meng - 曾经很傻很天真
图5.17  判断字符中是否有双字节

    主要代码如下:
    procedure TForm1.Button1Click(Sender: TObject);
    var
     s,s1: String;
     i : Integer;
    begin
     s := Edit1.Text;
     i := 0;
     while i      begin
      if (ByteType(S,i) <> mbSingleByte) then
      begin
       s1 := s1+ Copy(s,i,2)+' ';
       i := i+2;
      end
      else
       i:= i+1;
     end;
     Label2.Caption := Trim(s1);
    end;

    判数输入的字符串是否为整数

    本实例是用库函数sign()来判断数字是否为整数,当传入的值小于0则返回?1,若传入的值大于0则返回1,否则返回0。在用sign()函数时,要在单元中加入Math单元。运行结果如图5.18所示。

Delphi开发技巧:字符串的相关判断 - Meng - 曾经很傻很天真
图5.18  判数输入的字符串是否为整数

    主要代码如下:
    procedure TForm1.Button1Click(Sender: TObject);
    var
     s : String;
     i : Integer;
    begin
     s:=Edit1.Text;
     try
      i:=StrtoInt(s);
      if sign(i)=1 then  //添加单元Math或 if i>0 then ...
       Label2.Caption := '是正整数'
      else
      begin
       if i=0 then
        Label2.Caption := '是整数'
       else
        Label2.Caption := '非正整数';
      end;
     except
      Label2.Caption := '输入无效';
     end;
    end;

你可能感兴趣的:(Delphi程序实例)