⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 strprocess.pas

📁 为青岛一家公司做的条码打印管理
💻 PAS
📖 第 1 页 / 共 3 页
字号:
end;
function ReplaceBothStr(Str,RepStr,SignStr:string;CaseSensitive:boolean):string;//用RepStr替换最前面和最后面一个SignStr
begin
  Result:=ReplaceFirstStr(Str,RepStr,SignStr,CaseSensitive);
  Result:=ReplaceLastStr(Result,RepStr,SignStr,CaseSensitive);
end;
function ReplaceAllStr(Str,RepStr,SignStr:string;CaseSensitive:boolean;var RepCount:integer):string;//用RepStr替换所有的SignStr
var
  FirstPos:integer;
  Len,SignLen:integer;
  LeftStr,RightStr:string;
  Tmp1,Tmp2:string;
begin
  RepCount:=0;
  SignLen:=Length(SignStr);
  if CaseSensitive then begin
     if RepStr=SignStr then EStrProcess(EReplaceError,'',LoopReplace1);
  end else begin
    Tmp1:=AnsiUpperCase(RepStr);
    Tmp2:=AnsiUpperCase(SignStr);
    if Tmp1=Tmp2 then EStrProcess(EReplaceError,'',LoopReplace2);
  end;
  repeat
    Len:=Length(Str);
    FirstPos:=AnyPos(Str,SignStr,CaseSensitive);
    if FirstPos=0 then Continue;
    LeftStr:=Copy(Str,1,FirstPos-1);
    RightStr:=Copy(Str,FirstPos+SignLen,Len-FirstPos-SignLen+1);
    Str:=LeftStr+RepStr+RightStr;
    Inc(RepCount);
  until (FirstPos=0);
  Result:=Str;
end;


//字符串的删除
function TrimLeftChar(Str:string;DelChar:char):string;  //删除Str中左边的指定字符
var
  Len,i:integer;
  Temp:string;
begin
  Temp:='';
  Len:=Length(Str);
  for i:=1 to Len do begin
    if Temp='' then begin
      if Str[i]<>DelChar then Temp:=Temp+Str[i];
    end else Temp :=Temp+Str[i];
  end;
  Result:=Temp;
end;

function TrimRightChar(Str:string;DelChar:char):string; //删除Str中右边的指定字符
var
  ReverseStr:string;
begin
  ReverseStr:=Reversed(Str);
  ReverseStr:=TrimLeftChar(ReverseStr,DelChar);
  Result:=Reversed(ReverseStr);
end;

function TrimBoth(Str:string;DelChar:char):string;//删除Str中左右边的指定字符
var
  Str1:string;
begin
  Str1:=TrimLeftChar(Str,DelChar);
  Str1:=TrimRightChar(Str1,DelChar);
  Result:=Str1;
end;

function TrimAll(Str:String;DelChar:char):string;//删除Str中所有的指定字符
var
  Str1:string;
  i:integer;
begin
  Str1:='';
  for i:=1 to Length(Str) do begin
    if Str[i]<>DelChar then begin
       Str1:=Str1+Str[i];
    end;
  end;
  Result:=Str1;
end;

function TrimMiddle(Str:string;DelChar:char):string;//删除中间的指定字符(从左边和右边第一个不是指定字符之间)
var                                                 //如果该串全部是由DelChar字符组成,则全部删除 ;DelChar:='*'
  LeftPos,RightPos,Len:integer;                     //eg:Str:='****dd**d***'; result:='dd**d';
  LeftStr,RightStr,MiddleStr:string;                //eg:Str:='******';Result:='******';
begin                                               //eg:Str:='ddd***';Result:='ddd';
  LeftStr:='';                                      //eg:Str:='****ddd';Result:='ddd';
  RightStr:='';                                     //eg:Str:='ddd';Result:='ddd';
  MiddleStr:='';                                    //eg:Str:='';Result:='';
  Len:=Length(Str);
  LeftPos:=LeftLastPos(Str,DelChar);
  RightPos:=RightBeforePos(Str,DelChar);
  LeftStr:=Copy(Str,1,LeftPos);
  if RightPos=0 then RightStr:=''
  else RightStr:=Copy(Str,RightPos,Len-RightPos+1);
  MiddleStr:=GetMiddleString(Str,DelChar);
  if MiddleStr='' then Result:=MiddleStr  //如果Str为空串-返回空串,Str全部是由指定字符组成,删除所有字符,返回空串
  else begin
    Result:=LeftStr+TrimAll(MiddleStr,DelChar)+RightStr;
  end;
end;


//获取字符串的子串

//获取某一字符的左、右、中间的字符串
function GetLeftStr(Str:string;SpecifiedChar:char):string;//获取字符串某一特定字符(第一个)左边的所有字符(不含该特定字符)
var
  PosLeft:integer;
begin
  PosLeft:=Pos(SpecifiedChar,Str);
  Result:=Copy(Str,1,PosLeft-1);
end;

function GetMiddleStr(Str:string;SpecifiedChar:Char):string;//获取字符串某一特定字符(第一个和最后一个)
var                                                         //之间的所有字符(不含该两端的特定字符)e
  PosLeft,PosRight:integer;                                 // eg:Str:=C:\llw\delphi MiddleStr:='llw'
begin                                                       // eg:Str:=C:\llw\delphi\Program MiddleStr:=llw\delphi
  PosLeft:=Pos(SpecifiedChar,Str);
  PosRight:=ReversedPos(SpecifiedChar,Str);
                                                  //当串中只有两个SpecifiedChar并且紧挨在一起
                                                  //当串中没有SpecifiedChar字符时,
 Result:=Copy(Str,PosLeft+1,PosRight-PosLeft-1);  //当串中只有一个SpecifiedChar字符时,
                                                  //返回空串

end;

function GetRightStr(Str:string;SpecifiedChar:char):string;//获取字符串某一特定字符(第一个)右边的所有字符(不含该特定字符)
var
  PosRight:integer;
begin
  PosRight:=ReversedPos(SpecifiedChar,Str);
  if PosRight=0 then Result:=''
  else Result:=Copy(Str,PosRight+1,Length(Str)-PosRight)
end;

//字符串获取-获取某一字符串(该字符串由相同的字符组成)中间的字符串
function GetMiddleString(Str:string;SpecifiedChar:Char):string;//获取字符串左右边之间(左边最后一个指定字符到
var                                                            //右边第一个指定字符之间不包括两端的指定字符)的串。SpecifiedChar:='*'
  LeftPos,RightPos,Len:integer;                                //eg Str:='***dkd***kdk****' ;MiddleString:='dkd***kdk';
begin                                                          //eg Str:='**ddd**';MiddleString:='ddd';
  Len:=Length(Str);                                            //eg Str:='ddd**';MiddleString:='ddd';
  LeftPos:=LeftLastPos(Str,SpecifiedChar);                     //eg Str:='**ddd';MiddleString:='ddd';
  RightPos:=RightBeforePos(Str,SpecifiedChar);                 //eg Str:='';middleString:='';
  if  RightPos=0 then begin                                    //eg Str:='****';middleString:='';
     Result:=Copy(Str,LeftPos+1,Len-LeftPos);                  //eg Str:='dddd';middleString:='dddd';
  end else Result:=Copy(Str,LeftPos+1,RightPos-LeftPos-1);     //eg Str:='d*d*d';middleString:='d*d*d';
end;

//字符串获取-获取两个字符串相同的部分
function GetLeftSameStr(Str1,Str2:string):string; //获取两字符串左边相同的部分
var
  LeftPos:integer;
begin
   if Str1=Str2 then begin
     Result:=Str1;
     Exit;
   end;
   LeftPos:=FindDiverseLeftPos(Str1,Str2);
   Result:=Copy(Str1,1,LeftPos-1);
end;

function GetRightSameStr(Str1,Str2:string):string; //获取两字符串右边相同的部分
var
  RightPos,Len1,Len2:integer;
  Str:string;
begin
  Len1:=Length(Str1);
  Len2:=Length(Str2);
  if Len1>=Len2 then Str:=Str1
  else Str:=Str2;
  RightPos:=FindDiverseRightPos(Str1,Str2);
  Result:=Copy(Str,RightPos+1,Length(Str)-RightPos);
end;

//字符串获取-获取两个字符串不同的部分
procedure GetRightDiverse(var Str1,Str2:string); //获取两个字符串相同部分的右边不同部分
var
  LeftPos:integer;
  Len1,Len2:integer;
begin
  Str1:=TrimBoth(Str1,' ');
  Str2:=TrimBoth(Str2,' ');
  Len1:=Length(Str1);
  Len2:=Length(Str2);
  if Str1=Str2 then begin
    Str1:='';
    Str2:='';
    Exit;
  end;
  LeftPos:=FindDiverseLeftPos(Str1,Str2);
  Str1:=Copy(Str1,LeftPos,Len1-LeftPos+1);
  Str2:=Copy(Str2,LeftPos,Len2-LeftPos+1);
end;

procedure GetLeftDiverse(var Str1,Str2:string); //获取两个字符串相同部分左边不同部分
var
  RightPos:integer;
  Len1,Len2:integer;
begin
  Str1:=TrimBoth(Str1,' ');
  Str2:=TrimBoth(Str2,' ');
  Len1:=Length(Str1);
  Len2:=Length(Str2);
  RightPos:=FindDiverseRightPos(Str1,Str2);
  if Len1>=Len2 then begin
    Str1:=Copy(Str1,1,RightPos);
    Str2:=Copy(Str2,1,RightPos-(Len1-Len2));
  end else begin
    Str1:=Copy(Str1,1,RightPos-(Len2-Len1));
    Str2:=Copy(Str2,1,RightPos);
  end;
end;


//字符串的比较
function FindDiverseLeftPos(Str1,Str2:string):integer;//从左至右查找在字符串中不同的地方。空格忽略
var
  Len1,Len2,i,Count:integer;
begin
  Result:=0;
  Str1:=TrimBoth(Str1,' ');
  Str2:=TrimBoth(Str2,' ');
  Len1:=Length(Str1);
  Len2:=Length(Str2);
  if Str1=Str2 then begin
    Result:=0;
    Exit;
  end;
  if Len1>=Len2 then Count:=Len2
  else Count:=Len1;
  for i:=1 to Count do begin
    if Str1[i]<>Str2[i] then begin
      Result:=i;
      Break;
    end;
    if i=Count then Result:=i+1;
  end;
end;

function FindDiverseRightPos(Str1,Str2:string):integer;//从右至左查找在字符串中不同的位置。空格忽略
var
  Len1,Len2,i,Count:integer;
begin
  Result:=0;
  Str1:=TrimBoth(Str1,' ');
  Str2:=TrimBoth(Str2,' ');
  Len1:=Length(Str1);
  Len2:=Length(Str2);
  if Str1=Str2 then begin
    Result:=0;
    Exit;
  end;
  if Len1>=Len2 then begin
    Count:=Len1;
    Str2:=RepeatChar(' ',Len1-Len2)+Str2;
  end else begin
    Count:=Len2;
    Str1:=RepeatChar(' ',Len2-Len1)+Str1;
  end;
  for i:=Count downto 1 do begin
    if Str1[i]<>Str2[i] then begin
      Result:=i;
      Break;
    end;
  end;
end;

//字符串的插入
function RepeatChar(ReChar:char;Count:integer):string; //将某一字符重复Count次;
var
  i:integer;
begin
  Result:='';
  for i:=1 to Count do begin
    Result:=ReChar+Result;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -