1、delphi 字符串函数大全 delphi 字符串函数大全 函数 function AnsiResemblesText(const AText, AOther: string): Boolean; $StrUtils.pas 功能 返回两个字符串是否相似 说明 ANSI(American National Standards Institute)美国国家标准协会;不区分大小写 参考 function StrUtils.SoundexProc; var StrUtils.AnsiResemblesProc 例子 CheckBox1.Checked := AnsiResemblesText(Edi
2、t1.Text, Edit2.Text); 函数 function AnsiContainsText(const AText, ASubText: string): Boolean; $StrUtils.pas 功能 返回字符串 AText 是否包含子串 ASubText 说明 不区分大小写 参考 function StrUtils.AnsiUppercase; function StrUtils.AnsiPos 例子 CheckBox1.Checked := AnsiContainsText(Edit1.Text, Edit2.Text); 函数 function AnsiStartsTex
3、t(const ASubText, AText: string): Boolean; $StrUtils.pas 功能 返回字符串 AText 是否以子串 ASubText 开头 说明 不区分大小写 参考 function Windows.CompareString 例子 CheckBox1.Checked := AnsiStartsText(Edit1.Text, Edit2.Text); 函数 function AnsiEndsText(const ASubText, AText: string): Boolean; $StrUtils.pas 功能 返回字符串 AText 是否以子串 A
4、SubText 结尾 说明 不区分大小写 参考 function Windows.CompareString 例子 CheckBox1.Checked := AnsiEndsText(Edit1.Text, Edit2.Text); 函数 function AnsiReplaceText(const AText, AFromText, AToText: string): string; $StrUtils.pas 功能 返回字符串 AText 中用子串 AFromText 替换成子串 AToText 的结果 说明 不区分大小写 参考 function SysUtils.StringReplac
5、e; type SysUtils.TReplaceFlags 例子 Edit4.Text := AnsiReplaceText(Edit1.Text, Edit2.Text, Edit3.Text); 函数 function AnsiMatchText(const AText: string; const AValues: array of string): Boolean; $StrUtils.pas 功能 返回字符串数组 AValues 中是否包含字符串 AText 说明 不区分大小写 参考 function StrUtils.AnsiIndexText 例子 CheckBox1.Chec
6、ked := AnsiMatchText(Edit1.Text, a1, a2, a3, a4); 函数 function AnsiIndexText(const AText: string; const AValues: array of string): Integer; $StrUtils.pas 功能 返回字符串 AText 在字符串数组 AValues 中的位置 说明 不区分大小写;如果不包含则返回 -1 参考 function SysUtils.AnsiSameText 例子 SpinEdit1.Value := AnsiIndexText(Edit1.Text, a1, a2,
7、a3, a4); 函数 function AnsiContainsStr(const AText, ASubText: string): Boolean; $StrUtils.pas 功能 返回字符串 AText 是否包含子串 ASubText 说明 区分大小写 参考 function StrUtils.AnsiPos 例子 CheckBox1.Checked := AnsiContainsStr(Edit1.Text, Edit2.Text); 函数 function AnsiStartsStr(const ASubText, AText: string): Boolean; $StrUti
8、ls.pas 功能 返回字符串 AText 是否以子串 ASubText 开头 说明 区分大小写 参考 function SysUtils.AnsiSameStr 例子 CheckBox1.Checked := AnsiStartsStr(Edit1.Text, Edit2.Text); 函数 function AnsiEndsStr(const ASubText, AText: string): Boolean; $StrUtils.pas 功能 返回字符串 AText 是否以子串 ASubText 结尾 说明 区分大小写 参考 function SysUtils.AnsiSameStr 例
9、子 CheckBox1.Checked := AnsiEndsStr(Edit1.Text, Edit2.Text); 函数 function AnsiReplaceStr(const AText, AFromText, AToText: string): string; $StrUtils.pas 功能 返回字符串 AText 中用子串 AFromText 替换成子串 AToText 的结果 说明 区分大小写 参考 function SysUtils.StringReplace; type SysUtils.TReplaceFlags 例子 Edit4.Text := AnsiReplace
10、Str(Edit1.Text, Edit2.Text, Edit3.Text); 函数 function AnsiMatchStr(const AText: string; const AValues: array of string): Boolean; $StrUtils.pas 功能 返回字符串数组 AValues 中是否包含字符串 AText 说明 区分大小写 参考 function StrUtils.AnsiIndexStr 例子 CheckBox1.Checked := AnsiMatchStr(Edit1.Text, a1, a2, a3, a4); 函数 function An
11、siIndexStr(const AText: string; const AValues: array of string): Integer; $StrUtils.pas 功能 返回字符串 AText 在字符串数组 AValues 中的位置 说明 区分大小写 参考 function SysUtils.AnsiSameStr 例子 SpinEdit1.Value := AnsiIndexStr(Edit1.Text, a1, a2, a3, a4); 函数 function DupeString(const AText: string; ACount: Integer): string; $
12、StrUtils.pas 功能 返回字符串 AText 的 ACount 个复本 说明 当 ACount 为 0 时返回 参考 function System.SetLength 例子 Edit3.Text := DupeString(Edit1.Text, SpinEdit1.Value); 函数 function ReverseString(const AText: string): string; $StrUtils.pas 功能 返回字符串 AText 的反序 说明 ReverseString(1234) = 4321 参考 function System.SetLength 例子 E
13、dit3.Text := ReverseString(Edit1.Text); 函数 function StuffString(const AText: string; AStart, ALength: Cardinal; const ASubText: string): string; $StrUtils.pas 功能 返回嵌套字符串 说明 AStart:嵌套开始位置;ALength:嵌套长度;StuffString(abcd, 2, 0, 12) = a12bcd 参考 function System.Copy 例子 Edit3.Text := StuffString(Edit1.Text
14、, SpinEdit1.Value, SpinEdit2.Value, Edit2.Text); 函数 function RandomFrom(const AValues: array of string): string; overload; $StrUtils.pas 功能 随机返回字符串数组 AValues 中的一个元素 说明 之前建议执行 Randomize 参考 function System.Random 例子 Randomize; Edit3.Text := RandomFrom(a1, a2, a3, a4); 函数 function IfThen(AValue: Boolea
15、n; const ATrue: string; AFalse: string = ): string; overload; $StrUtils.pas 功能 返回指定的逻辑字符串 说明 IfThen(True, 是, 否) = 是;IfThen(False, 是, 否) = 否 参考 例子 Edit3.Text := IfThen(CheckBox1.Checked, Edit1.Text, Edit2.Text); 函数 function LeftStr(const AText: string; const ACount: Integer): string; $StrUtils.pas 功能
16、 返回字符串 AText 左边的 ACount 个字符 说明 LeftStr(123456, 3) = 123 参考 function System.Copy 例子 Edit3.Text := LeftStr(Edit1.Text, SpinEdit1.Value); 函数 function RightStr(const AText: string; const ACount: Integer): string; $StrUtils.pas 功能 返回字符串 AText 右边的 ACount 个字符 说明 RightStr(123456, 3) = 456 参考 function System
17、.Copy 例子 Edit3.Text := RightStr(Edit1.Text, SpinEdit1.Value); 函数 function MidStr(const AText: string; const AStart, ACount: Integer): string; $StrUtils.pas 功能 返回字符串 AText 从 AStart 开始的 ACount 个字符 说明 其实就是 Copy 参考 function System.Copy 例子 Edit3.Text := MidStr(Edit1.Text, SpinEdit1.Value, SpinEdit2.Value
18、); 函数 function SearchBuf(Buf: PChar; BufLen: Integer; SelStart, SelLength: Integer; SearchString: String; Options: TStringSearchOptions = soDown): PChar; $StrUtils.pas 功能 返回第一个搜索到的指针位置 说明 这函数常用于文本中搜索字符串 参考 例子 /Begin SearchBuf function SearchEdit(EditControl: TCustomEdit; const SearchString: String;
19、SearchOptions: TStringSearchOptions; FindFirst: Boolean = False): Boolean; var Buffer, P: PChar; Size: Word; begin Result := False; if (Length(SearchString) = 0) then Exit; Size := EditControl.GetTextLen; if (Size = 0) then Exit; Buffer := StrAlloc(Size + 1); try EditControl.GetTextBuf(Buffer, Size
20、+ 1); P := SearchBuf(Buffer, Size, EditControl.SelStart, EditControl.SelLength, SearchString, SearchOptions); if P nil then begin EditControl.SelStart := P - Buffer; EditControl.SelLength := Length(SearchString); Result := True; end; finally StrDispose(Buffer); end; end; procedure TForm1.Button1Clic
21、k(Sender: TObject); var SearchOptions: TStringSearchOptions; begin SearchOptions := ; if CheckBox1.Checked then Include(SearchOptions, soDown); if CheckBox2.Checked then Include(SearchOptions, soMatchCase); if CheckBox3.Checked then Include(SearchOptions, soWholeWord); SearchEdit(Memo1, Edit1.Text,
22、SearchOptions); Memo1.SetFocus; end; /End SearchBuf 函数 function Soundex(const AText: string; ALength: TSoundexLength = 4): string; $StrUtils.pas 功能 返回探测字符串 说明 根据探测法(Soundex)可以找到相进的字符串; http:/www.nara.gov/genealogy/coding.html 参考 例子 Edit2.Text := Soundex(Edit1.Text, SpinEdit1.Value); 函数 function Soun
23、dexInt(const AText: string; ALength: TSoundexIntLength = 4): Integer; $StrUtils.pas 功能 返回探测整数 说明 ALength 的值越大解码准确率越高 参考 例子 SpinEdit2.Value := SoundexInt(Edit1.Text, SpinEdit1.Value); 函数 function DecodeSoundexInt(AValue: Integer): string; $StrUtils.pas 功能 返回探测整数的解码 说明 DecodeSoundexInt(SoundexInt(hell
24、o) 相当于 Soundex(hello) 参考 例子 Edit2.Text := DecodeSoundexInt(SpinEdit2.Value); 函数 function SoundexWord(const AText: string): Word; $StrUtils.pas 功能 返回探测文字数值 说明 没有参数 ALength 已经固定为 4 参考 例子 SpinEdit2.Value := SoundexWord(Edit1.Text); 函数 function DecodeSoundexWord(AValue: Word): string; $StrUtils.pas 功能 返
25、回探测文字数值的解码 说明 DecodeSoundexWord(SoundexWord(hello) 相当于 Soundex(hello) 参考 例子 Edit2.Text := DecodeSoundexWord(SpinEdit2.Value); 函数 function SoundexSimilar(const AText, AOther: string; ALength: TSoundexLength = 4): Boolean; $StrUtils.pas 功能 返回两个字符串的探测字符串是否相同 说明 Result := Soundex(AText, ALength) = Sound
26、ex(AOther, ALength) 参考 例子 CheckBox1.Checked := SoundexSimilar(Edit1.Text, Edit2.Text, SpinEdit1.Value); 函数 function SoundexCompare(const AText, AOther: string; ALength: TSoundexLength = 4): Integer; $StrUtils.pas 功能 返回比较两个字符串的探测字符串的结果 说明 Result := AnsiCompareStr(Soundex(AText, ALength), Soundex(AOth
27、er, ALength) 参考 function SysUtils.AnsiCompareStr 例子 SpinEdit2.Value := SoundexCompare(Edit1.Text, Edit2.Text, SpinEdit1.Value); 函数 function SoundexProc(const AText, AOther: string): Boolean; $StrUtils.pas 功能 调用 SoundexSimilar 返回两个字符串的探测字符串是否相同 说明 系统变量 AnsiResemblesProc 的默认值 参考 function StrUtils.Ansi
28、ResemblesText 例子 var AnsiResemblesProc: TCompareTextProc = SoundexProc; 函数 function NewStr(const S: string): PString; deprecated; $SysUtils.pas 功能 返回一个新的字符串指针地址 说明 字符串 S 为空时返回 NullStr 参考 procedure System.New 例子 /Begin NewStr,DisposeStr procedure TForm1.Button1Click(Sender: TObject); var P: PString;
29、begin P := NewStr(Edit1.Text); Edit2.Text := P; DisposeStr(P); end; /End NewStr,DisposeStr 函数 procedure DisposeStr(P: PString); deprecated; $SysUtils.pas 功能 释放字符串指针 P 资源 说明 配合函数 NewStr 使用 参考 procedure System.Dispose 例子 函数 procedure AssignStr(var P: PString; const S: string); deprecated; $SysUtils.pa
30、s 功能 将字符串 S 更新给字符串指针 P 说明 更新值时会释放以前字符串指针的资源 参考 function SysUtils.NewStr;function SysUtils.DisposeStr 例子 /Begin AssignStr procedure TForm1.Button1Click(Sender: TObject); var P: PString; begin P := nil; AssignStr(P, Edit1.Text); Edit2.Text := P; DisposeStr(P); end; /End AssignStr 函数 procedure AppendSt
31、r(var Dest: string; const S: string); deprecated; $SysUtils.pas 功能 在字符串 Dest 后追加字符串 S 说明 相当于 Dest := Dest + S;Delphi6 已经不建议使用 参考 例子 /Begin AppendStr procedure TForm1.Button1Click(Sender: TObject); var S: string; begin S := Edit2.Text; AppendStr(S, Edit1.Text); Edit2.Text := S; end; /End AppendStr 函数
32、 function UpperCase(const S: string): string; $SysUtils.pas 功能 返回字符串 S 的大写形式 说明 非小写字符不处理 参考 procedure System.SetLength 例子 Edit2.Text := UpperCase(Edit1.Text); 函数 function LowerCase(const S: string): string; $SysUtils.pas 功能 返回字符串 S 的小写形式 说明 非大写字符不处理 参考 procedure System.SetLength 例子 Edit2.Text := Low
33、erCase(Edit1.Text); 函数 function CompareStr(const S1, S2: string): Integer; $SysUtils.pas 功能 返回比较两个字符 说明 当 S1S2 返回值0;当 S1S2 返回值0;当 S10;当 S10;当 S10;当 S10;当 S10;当 S10;当 S10;当 S1S2 返回值0;当 S1S2 返回值0;当 S1S2 返回值0;当 S1S2 返回值0;当 S1S2 返回值0;当 S1= i then Result := j - i + slen else Result := 0; end; 更快速的字符查询,快
34、40% function ScanStr(ToScan: PChar; Sign: Char):PChar; begin Result:= nil; if ToScan nil then while (ToScan #0) do begin if ToScan = Sign then begin Result:= ToScan; break; end; inc(ToScan); end; end; / 替换字符串中子串的函数,他可以从字符串中找出指定子串,并替换为另一子串。 function replacing(S,source,target:string):string; var site,
35、StrLen:integer; begin source 在 S 中出现的位置 site:=pos(source,s); source 的长度 StrLen:=length(source); 删除 source 字符串 delete(s,site,StrLen); 插入 target 字符串到 S 中 insert(target,s,site); 返回新串 replacing:=s; end; / 另两个替换字符串中子串的函数 function repl_substr( sub1, sub2, s: string ): string; var i: integer; begin repeat
36、i := pos( sub1, s ) ; if i 0 then begin delete( s, i, Length(sub1); insert( sub2, s, i ); end; until i 0 then Begin TempStr := S; Delete(TempStr,1,Position-1+Length(ReplacePiece); Result := Copy(S,1,Position-1)+ReplaceWith+ReplaceText(TempStr,ReplacePiece,ReplaceWith) End else Result := S; end; / 替换
37、全部子字符串的函数 function ReplaceSub(str, sub1, sub2: String): String; var aPos: Integer; rslt: String; begin aPos := Pos(sub1, str); rslt := ; while (aPos 0) do begin rslt := rslt + Copy(str, 1, aPos - 1) + sub2; Delete(str, 1, aPos + Length(sub1); aPos := Pos(sub1, str); end; Result := rslt + str; end; /
38、 在字符串左右填充指定数量的指定字符 function UT_PadString(inString :string; maxLength :integer; padChar :char; left :boolean) :string; begin result := inString; while (Length(result) 0 do tstr:=copy(tstr,1,pos(what,tstr)-1) + copy(tstr,pos(what,tstr)+length(tstr),length(tstr); Result:=tstr; end; 用法: NewStr:=RemoveIn
39、valid(,This is my string and I wan to remove the word ); / 根据某个字符分割字符串的函数 procedure SeparateTerms(s : string;Separator : char;Terms : TStringList); This browses a string and divide it into terms whenever the given separator is found. The separators will be removed var hs : string; p : integer; begin
40、 Terms.Clear; / First remove all remaining terms if Length(s)=0 then / Nothin to separate Exit; p:=Pos(Separator,s); while P0 do begin hs:=Copy(s,1,p-1); / Copy term Terms.Add(hs); / Add to list Delete(s,1,p); / Remove term and separator p:=Pos(Separator,s); / Search next separator end; if Length(s)
41、0 then Terms.Add(s); / Add remaining term end; = = 用 法 = var Terms : TStringList; i : integer; const TestStr = 1st term;2nd term;3rd term; begin Terms:=TStringList.Create; SeparateTerms(TestStr,;,Terms); for i:=0 to terms.Count-1 do ShowMessage(Terms.Stringsi); Terms.Free; end; / 根据一组字符分割字符串的函数 type
42、 Charset = set of Char; var f : Text; s : String; procedure WriteStringSplitted(var s: String; Separators: Charset); var a,e : Integer; anfang und ende des w 鰎 tchens begin a := 1; for e := 1 to Length(s) do if se in Separators then begin WriteLn(Copy(s, a, e-a); a := e + 1; end; WriteLn(Copy(s, a,
43、e-a+1); end; begin Assign(f, c:/dingsbums/text.txt); Reset(f); while not EOF(f) do begin ReadLn(f,s); WriteStringSplitted(s, :, ,); end; Close(f); end. / = 函数 : RESULTSTRING = HexToBin(HEXSTRING) 目的 : 把十六进制字符串转换为二进制字符串 = 函数 : RESULTINTEGER = HexCharToInt(HEXCHAR) 目的 : 转换一个十六进制字符为整数 = 函数 : RESULTSTRI
44、NG = HexCharToBin(HEXCHAR) 目的 : 转换一个十六进制字符为二进制字符串 = 函数 : RESULTINTEGER = Pow(BASE,POWER) 目的 : 指数函数 = 函数 : RESULTINTEGER = BinStrToInt(BINSTRING) 目的 : 把二进制字符串转换为整数 = 函数 : RESULTSTRING = DecodeSMS7Bit (PDUSTRING) 目的 : 解码一个 7-bit SMS (GSM 03.38) 为 ASCII 码 = 函数 : RESULTSTRING = ReverseStr (SOURCESTRING) 目的 : 反转一个字符串 =