一、0*1*2*3*4
二、0 1 2 3 4
三、0*1 2*3 4一和二是符合要求,而三就不符合。请问怎样判断一全是用星号隔开?而二是全部用空格隔开?三同时使用了星号和空格就不符合要求?谢谢

解决方案 »

  1.   

    flag1:=true;
    flag2:=true;for i:=1 to trunc(length(string1)/2) do
    begin  if flag1 and ord(string1[i*2])=42 then//*
      begin
        flag1:=true; 
        flag2:=false;
      end else
      if flag2 and ord(string1[i*2])=32 then//空格
      begin
        flag1:=false;
        flag2:=true;
      end else
      begin
        flag1:=false;
        flag2:=false;
        break;
      end;
    end;
    我没有验证,你可以自己试试
      

  2.   

    s:='0 1 2 3 4';
    if (pos('*',s)>0) and (pos(' ',s)>0) then
      showmessage('有星有空格')
    else if (pos('*',s)>0) and (pos(' ',s)=0) then
      showmessage('有星无空格')
    else if (pos('*',s)=0) and (pos(' ',s)>0) then
      showmessage('无星有空格');
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      s,s1:string;
      i,j,m:integer;
    begin
      m:=0;
      s:=form1.Edit1.Text;
      i:=length(s);
      for j:=0 to i-1 do
      begin
        if j mod 2=0 then
        begin
          s1:=s[j];
          if (s1='*') or (s1=' ') then
            m:=m+1;
        end;
      end;
      if m=i div 2 then
        showmessage('符合要求')
      else
        showmessage('不符合要求');
    end;
      

  4.   

    刚才错了
    应该是
    procedure TForm1.Button1Click(Sender: TObject);
    var
      s,s1:string;
      i,j,m1,m2:integer;
    begin
      m1:=0;
      m2:=0;
      s:=form1.Edit1.Text;
      i:=length(s);
      for j:=0 to i-1 do
      begin
        if j mod 2=0 then
        begin
          s1:=s[j];
          if s1='*' then
            m1:=m1+1
          else
            if s1=' ' then
              m2:=m2+1;
        end;
      end;
      if (m1=i div 2) or (m2=i div 2) then
        showmessage('符合要求')
      else
        showmessage('不符合要求');end;
      

  5.   

    你的问题可以等效于,字符串中是否同时存在空格和星号,因此,判断很简单function IsLegelStr(aStr: String): Boolean;
    var
      vHaveSpace, vHaveStar: Boolean;
    begin
      vHaveSpace := Pos(' ', aStr) > 0;
      vHaveStar := Pos('*', aStr) > 0;
      Result := vHaveSpace xor vHaveStar;
    end;
      

  6.   

    我同意楼上说的,你完全可以那样做:
      
      function IsValidStr(AStr: String): Boolean;
      begin
        Result := (Pos(' ', AStr) > 0) and (Pos('*', AStr) > 0) ;
      end;