Loading... <p><font face="Courier New">[php]</font></p><p><font face="Courier New">copy(str,pos,num) 从str字符串的pos处开始,截取num个字符的串返回.假设str为'abcdef',copy(str,3,2)='cd',copy(str,4,10)='def' <br />concat(str1,str2{,strn}) 把各自变量连接起来,返回连接后的字符串(长度不能超过255) <br />length(str) 返回str的字符个数,即其长度. <br />pos(obj,target) 在target字符串中找出第一个出现obj的第一个字符位置,如果找不到,返回0. <br />AnsiStrLastChar('你好')结果是“好”。如果有半个汉字出现,返回这半个汉字。二者字符串长度分别为2和1。 <br />CompareStr - 区分大小写 <br />CompareText - 不区分大小写 <br />//////////////////////////////////////////////////////// <br />{判断字符是否是数字} <br />function IsDigit(ch: char): boolean; <br />begin <br />Result := ch in ['0'..'9']; <br />end; <br />{判断字符是否是大写字符} <br />function IsUpper(ch: char): boolean; <br />begin <br />Result := ch in ['A'..'Z']; <br />end; <br />{判断字符是否是小写字符} <br />function IsLower(ch: char): boolean; <br />begin <br />Result := ch in ['a'..'z']; <br />end; <br />{转换为大写字符} <br />function ToUpper(ch: char): char; <br />begin <br />Result := chr(ord(ch) and $DF); <br />end; <br />{转换为小写字符} <br />function ToLower(ch: char): char; <br />begin <br />Result := chr(ord(ch) or $20); <br />end; <br />{ Capitalizes first letter of every word in s } <br />function Proper(const s: string): string; <br />var <br />i: Integer; <br />CapitalizeNextLetter: Boolean; <br />begin <br />Result := LowerCase(s); <br />CapitalizeNextLetter := True; <br />for i := 1 to Length(Result) do <br />begin <br />if CapitalizeNextLetter and IsLower(Result[i]) then <br />Result[i] := ToUpper(Result[i]); <br />CapitalizeNextLetter := Result[i] = ' '; <br />end; <br />end; <br />//////////////////////////////////////////////////////////// <br />{返回两个子字符串之间字符的个数} <br />Function p2pcount( s, ss1, ss2 : string ): integer; <br />var i, j, slen : integer; <br />begin <br />i := pos( ss1, s ); <br />j := pos( ss2, s ); <br />slen := Length(ss2); <br />if j >= i then Result := j - i + slen else Result := 0; <br />end; <br />{更快速的字符查询,快40%} <br />function ScanStr(ToScan: PChar; Sign: Char):PChar; <br />begin <br />Result:= nil; <br />if ToScan <> nil then <br />while (ToScan^ <> #0) do begin <br />if ToScan^ = Sign then begin <br />Result:= ToScan; <br />break; <br />end; <br />inc(ToScan); <br />end; <br />end; <br />///////////////////////////// <br />替换字符串中子串的函数,他可以从字符串中找出指定子串,并替换为另一子串。 <br />function replacing(S,source,target:string):string; <br />var site,StrLen:integer; <br />begin <br />{source在S中出现的位置} <br />site:=pos(source,s); <br />{source的长度} <br />StrLen:=length(source); <br />{删除source字符串} <br />delete(s,site,StrLen); <br />{插入target字符串到S中} <br />insert(target,s,site); <br />{返回新串} <br />replacing:=s; <br />end; <br />/////////////////////// <br />另两个替换字符串中子串的函数 <br />function repl_substr( sub1, sub2, s: string ): string; <br />var i: integer; <br />begin <br />repeat <br />i := pos( sub1, s ) ; <br />if i > 0 then begin <br />delete( s, i, Length(sub1)); <br />insert( sub2, s, i ); <br />end; <br />until i < 1; <br />Result := s; <br />end; <br />function ReplaceText(const S,ReplacePiece,ReplaceWith: String):String; <br />Var Position: Integer; <br />TempStr: String; <br />begin <br />Position := Pos(ReplacePiece,S); <br />if Position > 0 then Begin <br />TempStr := S; <br />Delete(TempStr,1,Position-1+Length(ReplacePiece)); <br />Result := <br />Copy(S,1,Position-1)+ReplaceWith+ReplaceText(TempStr,ReplacePiece,ReplaceWith) <br />End else Result := S; <br />end; <br />//////////////////////// <br />替换全部子字符串的函数 <br />function ReplaceSub(str, sub1, sub2: String): String; <br />var <br />aPos: Integer; <br />rslt: String; <br />begin <br />aPos := Pos(sub1, str); <br />rslt := ''; <br />while (aPos <> 0) do begin <br />rslt := rslt + Copy(str, 1, aPos - 1) + sub2; <br />Delete(str, 1, aPos + Length(sub1)); <br />aPos := Pos(sub1, str); <br />end; <br />Result := rslt + str; <br />end; <br />///////////////////////// <br />在字符串左右填充指定数量的指定字符 <br />function UT_PadString(inString :string; maxLength :integer; padChar :char; <br />left :boolean) :string; <br />begin <br />result := inString; <br />while (Length(result) < maxLength) do <br />if (left) then <br />result := padChar + result <br />else <br />result := result + padChar; <br />end; <br />///////////////////////////////////// <br />提取字符串中指定子字符串前的字符串 <br />Function Before ( Src:string ; Var S:string ) : string ; <br />Var <br />F : Word ; <br />begin <br />F := POS (Src,S) ; <br />if F=0 then <br />Before := S <br />else <br />Before := COPY(S,1,F-1) ; <br />end ; <br />////////////////////////////////// <br />提取字符串中指定子字符串后的字符串 <br />Function After ( Src:string ; Var S:string ) : string ; <br />Var <br />F : Word ; <br />begin <br />F := POS (Src,S) ; <br />if F=0 then <br />After := '' <br />else <br />After := COPY(S,F+length(src),length(s)) ; <br />end ; <br />//////////////////////////////////// <br />判断字符串是否可以转换为整数 <br />function IsIntStr(const S: string): boolean; <br />begin <br />Result:=StrToIntDef(S,0)=StrToIntDef(S,1); <br />end; <br />////////////////////////////////////// <br />从字符串中删除指定字符串 <br />procedure RemoveInvalid(what, where: string): string; <br />var <br />tstr: string; <br />begin <br />tstr:=where; <br />while pos(what, tstr)>0 do <br />tstr:=copy(tstr,1,pos(what,tstr)-1) + <br />copy(tstr,pos(what,tstr)+length(tstr),length(tstr)); <br />Result:=tstr; <br />end; <br />用法: <br />NewStr:=RemoveInvalid('<invalid>','This <invalid> is my string and I wan to <br />remove the word <invalid>'); <br />/////////////////////////////////////////// <br />根据某个字符分割字符串的函数 <br />procedure SeparateTerms(s : string;Separator : char;Terms : TStringList); <br />{ This browses a string and divide it into terms whenever the given <br />separator is found. The separators will be removed } <br />var <br />hs : string; <br />p : integer; <br />begin <br />Terms.Clear; // First remove all remaining terms <br />if Length(s)=0 then // Nothin' to separate <br />Exit; <br />p:=Pos(Separator,s); <br />while P<>0 do <br />begin <br />hs:=Copy(s,1,p-1); // Copy term <br />Terms.Add(hs); // Add to list <br />Delete(s,1,p); // Remove term and separator <br />p:=Pos(Separator,s); // Search next separator <br />end; <br />if Length(s)>0 then <br />Terms.Add(s); // Add remaining term <br />end; <br />========== <br />= 用 法 <br />========== <br />var <br />Terms : TStringList; <br />i : integer; <br />const <br />TestStr = '1st term;2nd term;3rd term'; <br />begin <br />Terms:=TStringList.Create; <br />SeparateTerms(TestStr,';',Terms); <br />for i:=0 to terms.Count-1 do <br />ShowMessage(Terms.Strings[i]); <br />Terms.Free; <br />end; <br />///////////////////////////// <br />根据一组字符分割字符串的函数 <br />type <br />Charset = set of Char; <br />var <br />f : Text; <br />s : String; <br />procedure WriteStringSplitted(var s: String; Separators: Charset); <br />var <br />a,e : Integer; {anfang und ende des w鰎tchens} <br />begin <br />a := 1; <br />for e := 1 to Length(s) do <br />if s[e] in Separators then begin <br />WriteLn(Copy(s, a, e-a)); <br />a := e + 1; <br />end; <br />WriteLn(Copy(s, a, e-a+1)); <br />end; <br />begin <br />Assign(f, 'c:\dingsbums\text.txt'); <br />Reset(f); <br />while not EOF(f) do begin <br />ReadLn(f,s); <br />WriteStringSplitted(s, [':', ',']); <br />end; <br />Close(f); <br />end. <br />////////////////////////////////////////////////// <br />{===============================================================} <br />{ 函数 : RESULTSTRING = HexToBin(HEXSTRING) <br />{ 目的 : 把十六进制字符串转换为二进制字符串 <br />{ <br />{===============================================================} <br />{ 函数 : RESULTINTEGER = HexCharToInt(HEXCHAR) <br />{ 目的 : 转换一个十六进制字符为整数 <br />{===============================================================} <br />{ 函数 : RESULTSTRING = HexCharToBin(HEXCHAR) <br />{ 目的 : 转换一个十六进制字符为二进制字符串 <br />{===============================================================} <br />{ 函数 : RESULTINTEGER = Pow(BASE,POWER) <br />{ 目的 : 指数函数 <br />{===============================================================} <br />{ 函数 : RESULTINTEGER = BinStrToInt(BINSTRING) <br />{ 目的 : 把二进制字符串转换为整数 <br />{===============================================================} <br />{ 函数 : RESULTSTRING = DecodeSMS7Bit (PDUSTRING) <br />{ 目的 : 解码一个7-bit SMS (GSM 03.38) 为ASCII码 <br />{===============================================================} <br />{ 函数 : RESULTSTRING = ReverseStr (SOURCESTRING) <br />{ 目的 : 反转一个字符串 <br />{===============================================================} <br />unit BinHexTools; <br />interface <br />function HexToBin(HexNr : string): string; <br />function HexCharToInt(HexToken : char):Integer; <br />function HexCharToBin(HexToken : char): string; <br />function pow(base, power: integer): integer; <br />function BinStrToInt(BinStr : string) : integer; <br />function DecodeSMS7Bit(PDU : string):string; <br />function ReverseStr(SourceStr : string) : string; <br />implementation <br />uses sysutils, dialogs; <br />function HexCharToInt(HexToken : char):Integer; <br />begin <br />{if HexToken>#97 then HexToken:=Chr(Ord(HexToken)-32); <br />{ use lowercase aswell } <br />Result:=0; <br />if (HexToken>#47) and (HexToken<#58) then { chars 0....9 } <br />Result:=Ord(HexToken)-48 <br />else if (HexToken>#64) and (HexToken<#71) then { chars A....F } <br />Result:=Ord(HexToken)-65 + 10; <br />end; <br />function HexCharToBin(HexToken : char): string; <br />var DivLeft : integer; <br />begin <br />DivLeft:=HexCharToInt(HexToken); { first HEX->BIN } <br />Result:=''; <br />{ Use reverse dividing } <br />repeat { Trick; divide by 2 } <br />if odd(DivLeft) then { result = odd ? then bit = 1 } <br />Result:='1'+Result { result = even ? then bit = 0 } <br />else <br />Result:='0'+Result; <br />DivLeft:=DivLeft div 2; { keep dividing till 0 left and length = 4 } <br />until (DivLeft=0) and (length(Result)=4); { 1 token = nibble = 4 bits } <br />end; <br />function HexToBin(HexNr : string): string; <br />{ only stringsize is limit of binnr } <br />var Counter : integer; <br />begin <br />Result:=''; <br />for Counter:=1 to length(HexNr) do <br />Result:=Result+HexCharToBin(HexNr[Counter]); <br />end; <br />function pow(base, power: integer): integer; <br />var counter : integer; <br />begin <br />Result:=1; <br />for counter:=1 to power do <br />Result:=Result*base; <br />end; <br />function BinStrToInt(BinStr : string) : integer; <br />var counter : integer; <br />begin <br />if length(BinStr)>16 then <br />raise ERangeError.Create(#13+BinStr+#13+ <br />'is not within the valid range of a 16 bit binary.'+#13); <br />Result:=0; <br />for counter:=1 to length(BinStr) do <br />if BinStr[Counter]='1' then <br />Result:=Result+pow(2,length(BinStr)-counter); <br />end; <br />function DecodeSMS7Bit(PDU : string):string; <br />var OctetStr : string; <br />OctetBin : string; <br />Charbin : string; <br />PrevOctet: string; <br />Counter : integer; <br />Counter2 : integer; <br />begin <br />PrevOctet:=''; <br />Result:=''; <br />for Counter:=1 to length(PDU) do <br />begin <br />if length(PrevOctet)>=7 then { if 7 Bit overflow on previous } <br />begin <br />if BinStrToInt(PrevOctet)<>0 then <br />Result:=Result+Chr(BinStrToInt(PrevOctet)) <br />else Result:=Result+' '; <br />PrevOctet:=''; <br />end; <br />if Odd(Counter) then { only take two nibbles at a time } <br />begin <br />OctetStr:=Copy(PDU,Counter,2); <br />OctetBin:=HexToBin(OctetStr); <br />Charbin:=''; <br />for Counter2:=1 to length(PrevOctet) do <br />Charbin:=Charbin+PrevOctet[Counter2]; <br />for Counter2:=1 to 7-length(PrevOctet) do <br />Charbin:=OctetBin[8-Counter2+1]+Charbin; <br />if BinStrToInt(Charbin)<>0 then Result:=Result+Chr(BinStrToInt(CharBin)) <br />else Result:=Result+' '; <br />PrevOctet:=Copy(OctetBin,1,length(PrevOctet)+1); <br />end; <br />end; <br />end; <br />function ReverseStr(SourceStr : string) : string; <br />var Counter : integer; <br />begin <br />Result:=''; <br />for Counter:=1 to length(SourceStr) do <br />Result:=SourceStr[Counter]+Result; <br />end; <br />end. <br /><br /></font></p><p><font face="Courier New">[/php]</font></p> 相关文章 Golang 汇编入门知识总结 未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序 视频防盗链技术方案研究与讲解 Visual Studio Code 无法执行tsc编译ts文件的解决办法 JavaScript Array 数组常用函数 Delphi7调用C#的webservice,在windows2008下不能运行?? Delphi ListView排序 Delphi中获取Unix时间戳及注意事项 恢复delphi7 文件关联 delphi Format格式化函数 Last modification:August 16th, 2009 at 12:30 pm © 允许规范转载 Support 如果觉得我的文章对你有用,请随意赞赏 ×Close Appreciate the author Sweeping payments Pay by AliPay Pay by WeChat