Delphi函数 处理字符串《确保字符串分号;的位置和数量符合规则》--笔记

实现效果

每个项目后只跟定一个分号,

传入    ;abc;123;jkl;   返回  abc;123;jkl;  //消除了,字符串第一位为分号的问题

传入    abc;;;123;;;jkl; 返回  abc;123;jkl;  //消除了,字符串中项目之后跟了多余的分号;

传入    abc;;;123;;;jkl  返回  abc;123;jkl;  //在字符串最后的项目补上字符串


关键函数  

Delete
  {功能说明:删除字符串中指定的字符串。该函数有三个参数。第一个参数为要进行处理的字符串,第二个参数为从何处开始删除,第三个参数为删除的字符个数。}

LeftStr(所在单元:StrUtils)
  {功能说明:返回字符串左边指定个数的新字符(串)。该函数有两个参数。第一个参数为完整的字符串,第二个参数为指定个数。}

RightStr(所在单元:StrUtils)
  {功能说明:返回字符串右边指定个数的新字符(串)。该函数有两个参数。第一个参数为完整的字符串,第二个参数为指定个数。}

Pos
  {功能说明:查找字符(串)所在位置。该函数有二个参数。第一个参数为要查找的字符(串),第二个参数为被查找字符(串)。}






Code:     // 需要 uses

StrUtils
单元


function DealStr(s:string):string;
var s2,s3:string;
var  s1:widestrng;    //如果要处理的字符串有汉子,应使用widestrng类型,
begin
  s1:='';
  s2:='';
  s3:='';
  s1:=s;
  if not (s1='') then
  begin
       while Pos(' ',s1)>0 do //消除字符串所有空格
       begin
        Delete(s1,Pos(' ',s1),1);
       end;
       if rightstr(s1,1)<>';' then //字符串末尾加上';'以保证进入循环的数据完整性
       begin
           s1:=s1+';';
       end;

       while (Length(s1)>0) do   //检测字符串s1到为0为止
       begin
         if Pos(';',s1)=1 then    //判断第一位是不是';'
         begin
           s1:=RightStr(s1, (Length(s1)-Pos(';',s1)) );
         end;
         s3:=LeftStr(s1,Pos(';',s1));//取左边的字符串
         if (s3=';')then //若左边的字符串只有分号,则舍弃
         begin
         end else
         begin
           s2:=s2+s3; //累积符合规则的字符串
         end;
         s1:=RightStr(s1, (Length(s1)-Pos(';',s1)) );
       end;
  end;
  Result:=s2;
end;



你可能感兴趣的:(Delphi技术)