📄 strprocess.pas
字号:
end;
Result:=Result+Canvas.TextWidth(CurrentStr)+WordSpace;
inc(i);
end;
end;
function GetTextOutHeight(Canvas:TCanvas;List:TStringList;LineSpace:integer):integer; //获取StringList输出时的高度。
var
i:integer;
begin
Result:=0;
if List.Count=0 then Exit;
for i:=0 to List.Count-1 do begin
if i<>List.Count-1 then Result:=Result+Canvas.TextHeight(List.Strings[i])+LineSpace
else Result:=Result+Canvas.TextHeight(List.Strings[i]);
end;
end;
//串的排列顺序
function Reversed(Str:string):string; //倒排字符串
var
Len:integer;
RevStr,temp:string;
i:integer;
begin
Result:=Str;
Len:=Length(Str);
if len=0 then Exit;
if Len=1 then Exit;
SetLength(RevStr,Len);
for i:= Len-1 downto 0 do begin
temp:=Str[Len-i];
RevStr[i+1]:=Str[Len-i];
end;
Result:=RevStr;
end;
//子串在串中的位置
function ReversedPos(SubStr,Str:string):integer; //查找最右边的SubStr在Str中的位置。与Pos相反。
var
Len:integer;
Position:integer;
begin
Len:=Length(Str);
Str:=Reversed(Str);
SubStr:=Reversed(SubStr);
Position:=Pos(SubStr,Str);
if Position<>0 then Result:=Len-Position+1-(Length(SubStr)-1)
else Result:=0;
end;
function LeftLastPos(Str:string;FindChar:Char):integer;//查找某一个字符在串左边的最后的位置 返回0表示没有这样的字符
var
Len,i:integer;
begin
Len:=Length(Str);
Result:=0;
for i:=1 to Len do begin
if Str[i]=FindChar then begin
if i=Len then Result:=Len;
continue;
end else begin
Result:=i-1;
Break;
end;
end;
end;
function RightBeforePos(Str:string;FindChar:char):integer;//查早某一字符在右边最前的位置 返回0表示没有这样的字符
var
RevStr:string;
RevPos,Len:integer;
begin
Len:=Length(Str);
RevStr:=Reversed(Str);
RevPos:=LeftLastPos(RevStr,FindChar);
if Str<>'' then begin
if Str[Len]<>FindChar then Result:=0
else Result:=Length(Str)-RevPos+1;
end else Result:=0;
end;
function LastPos(Str:string;FindChar:char):integer;//查找某一字符在串中最后的位置。返回0表示没有这样的字符
begin
Result:=ReversedPos(FindChar,Str);
end;
function LastPos(Str:string;FindStr:string):integer;//查找某一字符在串中最后的位置。返回0表示没有这样的字符
begin
Result:=ReversedPos(FindStr,Str);
end;
function AnyPos(Str,FindStr:string;CaseSensitive:boolean):integer;//可以按是否区分大小写来查找,其余功能同Pos
begin
if CaseSensitive then Result:=Pos(FindStr,Str)
else begin
Str:=AnsiUpperCase(Str);
FindStr:=AnsiUpperCase(FindStr);
Result:=Pos(FindStr,Str);
end;
end;
function AnyLastPos(Str,FindStr:string;CaseSensitive:boolean):integer;//可以按是否区分大小写来查找最后一个FindStr的位置,其余功能同LastPos
begin
if CaseSensitive then Result:=LastPos(Str,FindStr)
else begin
Str:=AnsiUpperCase(Str);
FindStr:=AnsiUpperCase(FindStr);
Result:=LastPos(Str,FindStr);
end;
end;
procedure GetSubInfoInStr(Str,SubStr:string;CaseSensitive:boolean;var InfoList:TStringList);//获取一个串中所有子串在串中的位置
var //InfoList返回的一些数字是SubStr在
RelativePos,AbsolutePos:integer; //Str中的位置。
CutLen,Len,SubLen:integer;
begin
InfoList.Clear;
SubLen:=Length(SubStr);
CutLen:=0;
repeat
Len:=Length(Str);
RelativePos:=AnyPos(Str,SubStr,CaseSensitive);
if RelativePos=0 then begin
if CutLen=0 then InfoList:=nil ;
Continue;
end;
Str:=Copy(Str,RelativePos+SubLen,Len-RelativePos-SubLen+1);
AbsolutePos:=CutLen+RelativePos;
InfoList.Add(IntToStr(AbsolutePos));
CutLen:=CutLen+RelativePos+SubLen-1;
until ((Len<SubLen) or (RelativePos=0));
end;
//字符串的替换
//字符串的替换--用String代替SignChar位置前、后、之间的的串
function ReplaceLeft(Str,RepStr:string;SignChar:char):string;//RepStr替换左边第一个SignChar前面的所有字符 。如果没有找到相应的字符就返回原串
var
SignStr:string;
Position,Len:integer;
begin
SignStr:='1';
SignStr[1]:=SignChar;
Result:=Str;
Len:=Length(Str);
Position:=Pos(SignStr,Str);
if Position<>0 then begin //如果没有找到相应的字符就返回原串
Str:=Copy(Str,Position,Len-Position+1);
Result:=RepStr+Str;
end;
end;
function ReplaceMiddle(Str,RepStr:string;SignChar:char):string; //用RepStr替换第一个和最后一个SignChar 之间的所有字符
var
LeftStr,MidStr,RightStr:string;
begin
LeftStr:=GetLeftStr(Str,SignChar);
RightStr:=GetRightStr(Str,SignChar);
MidStr:=GetMiddleStr(Str,SignChar);
if MidStr='' then begin
//当串中只有两个SignChar并且紧挨在一起
Result:=Str; //当串中没有SignChar字符时,
//当串中只有一个SignChar字符时,
//返回原串
end else begin
MidStr:=RepStr;
Result:=LeftStr+SignChar+MidStr+SignChar+RightStr;
end;
end;
function ReplaceRight(Str,RepStr:string;SignChar:char):string;//用RepStr替换右边第一个SignChar后面的所有字符 。如果没有找到相应的字符就返回原串
var
Count:integer;
SignStr:string;
begin
SignStr:='1';
SignStr[1]:=SignChar;
Result:=Str;
Count:=ReversedPos(SignStr,Str);
if Count<>0 then begin //如果没有找到相应的字符就返回原串
Str:=Copy(Str,1,Count);
Result:=Str+RepStr;
end;
end;
function ReplaceBoth(Str,RepStr:string;SignChar:char):string;//用RepStr替换左边第一个SignChar前面和右边第一个SignChar后面的所有串
begin
Result:=ReplaceLeft(Str,RepStr,SignChar);
Result:=ReplaceRight(Result,RepStr,SignChar);
end;
//字符串的替换--用SpecifiedChar代替SignChar位置前、后、之间的SignChar
function ReplaceLeftChar(Str:string;RepChar,SignChar:char):string;//用RepChar替换从左边到第一个不是SignChar之间的所有SignChar字符
var
LeftPos,i:integer;
begin
LeftPos:=LeftLastPos(Str,SignChar);
for i:=1 to LeftPos do Str[i]:=RepChar;
Result:=Str;
end;
function ReplaceMiddleChar(Str:string;RepChar,SignChar:char):string;//用RepChar替换从左边到第一个不是SignChar开始 到 从右边开始到第一个不是SignChar之间的所有SignChar
var
LeftStr,RightStr,MidStr:string;
LeftPos,RightPos,Len:integer;
begin
Len:=Length(Str);
LeftPos:=LeftLastPos(Str,SignChar);
RightPos:=RightBeforePos(Str,SignChar);
LeftStr:=Copy(Str,1,LeftPos);
if RightPos=0 then RightStr:=''
else RightStr:=Copy(Str,RightPos,Len);
MidStr:=GetMiddleString(Str,SignChar);
if MidStr='' then Result:=Str
else begin
MidStr:=ReplaceAllChar(MidStr,RepChar,SignChar);
Result:=LeftStr+MidStr+RightStr;
end;
end;
function ReplaceRightChar(Str:string;RepChar,SignChar:char):string;//用RepChar替换从最右边到第一个不是SignChar之间的所有SignChar字符
var
RightPos,i:integer;
begin
RightPos:=RightBeforePos(Str,Signchar);
if RightPos=0 then begin
Result:=Str;
end else begin
for i:=RightPos to Length(Str) do begin
Str[i]:=RepChar;
end;
Result:=Str;
end;
end;
function ReplaceBothChar(Str:string;RepChar,SignChar:char):string;//用RepChar替换从左边到第一个不是SignChar之间以及从最右边到第一个不是SignChar之间的所有SignChar字符
begin
Result:=ReplaceLeftChar(Str,RepChar,SignChar);
Result:=ReplaceRightChar(Result,RepChar,SignChar);
end;
function ReplaceAllChar(Str:string;RepChar,SignChar:char):string;//用RepChar代替串中所有的SignChar
var
i:integer;
begin
for i:=1 to Length(Str) do begin
if Str[i]=SignChar then Str[i]:=RepChar;
end;
Result:=Str;
end;
//字符串的替换--用RepStr代替SignStr
function ReplaceFirstStr(Str,RepStr,SignStr:string;CaseSensitive:boolean):string;//用RepStr替换第一个SignStr
var
FirstPos,Len,RepLen:integer;
LeftStr,RightStr:string;
begin
LeftStr:='';
RightStr:='';
RepLen:=Length(SignStr);
Len:=Length(Str);
FirstPos:=AnyPos(Str,SignStr,CaseSensitive);
if FirstPos=0 then Result:=Str
else begin
LeftStr:=Copy(Str,1,FirstPos-1);
RightStr:=Copy(Str,FirstPos+RepLen,Len-FirstPos-RepLen+1);
Result:=LeftStr+RepStr+RightStr;
end;
end;
function ReplaceLastStr(Str,RepStr,SignStr:string;CaseSensitive:boolean):string;//用RepStr替换最后一个SignStr
var
LastPos1,Len,RepLen:integer;
LeftStr,RightStr:string;
begin
LeftStr:='';
RightStr:='';
RepLen:=Length(SignStr);
Len:=Length(Str);
LastPos1:=AnyLastPos(Str,SignStr,CaseSensitive);
if LastPos1=0 then Result:=Str
else begin
LeftStr:=Copy(Str,1,LastPos1-1);
RightStr:=Copy(Str,LastPos1+RepLen,Len-LastPos1-RepLen+1);
Result:=LeftStr+RepStr+RightStr;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -