delphi中關於字串的操作

fengchuixuelai發表於2011-09-15
 
常用的字串處理函式(一定要注意引用 strutils單元)
函式名 語法 功能
AnsiCompareStr function AnsiCompareStr(const S1, S2: string): Integer; 用於比較兩個大小寫敏感的字串
AnsiCompareText function AnsiCompareText(const S1, S2: string): Integer; 用於比較兩個大小寫不敏感的字串
AnsiUpperCase function AnsiUpperCase(const S: string): string; 將字串轉換為全部大寫
AnsiLowerCase function AnsiLowerCase(const S: string): string; 將字串轉換為全部小寫
Appendstr procedure AppendStr(var Dest: string; const S: string); deprecated; 將給定字串常量新增到目標字串末尾
CompareStr function CompareStr(const S1, S2: string): Integer; 用於比較兩個大小寫敏感的字串,其結果與區域設定無關
CompareText function CompareText(const S1, S2: string): Integer; 用於比較兩個大小寫不敏感的字串,其結果與區域設定無關
Concat function Concat(s1 [, s2,..., sn]: string): string; 將一組字串連線起來
Copy function Copy(S; Index, Count: Integer): string; 返回字串的子串
Delete procedure Delete(var S: string; Index, Count:Integer); 從字串中刪除一個子串
Insert procedure Insert(Source: string; var S: string; Index: Integer); 在字串的指定位置插入一個子串
Length function Length(S): Integer; 返回字串中中字元的個數
Pos function Pos(Substr: string; S: string): Integer; 在字串中搜尋子串,返回的是索引值
LeftStr function LeftStr(const AText: AnsiString; const ACount: Integer): AnsiString; 返回從字串左邊開始指定長度的子串
RightStr function RightStr(const AText: AnsiString; const ACount: Integer): AnsiString; 返回從字串末尾向前指定長度的子串
InttoStr function IntToStr(Value: Integer): string; 將整數轉換為字串
StrtoInt function StrToInt(const S: string): Integer; 將字串轉換為整數
LowerCase function LowerCase(const S: string): string; 轉換為小寫
UpperCase function UpperCase(const S: string): string; 轉化為大寫
Val procedure Val(S; var V; var Code: Integer); 將字串的值轉換為其數字表示式

TStrings物件的屬性和方法
TStrings的一些重要屬性和方法如下所示。
Count:該屬性定義列表中字串的數量。
Strings:該屬性表示由引數Index指定位置的字串。0表示第一個字串,1表示第二個字串,依此類推。
Text:TStings物件的文字,它包含一些由回車和換行符分開的字串。
Add方法:該方法在字串列表的末尾新增一字串。在呼叫Add方法加入字串之後,再返回新字串的索引值。
AddObject方法:該方法向字串列表中加入一個字串及與它相聯絡的物件。呼叫AddObject方法之後將返回新字串和物件的索引值。
Append方法:該方法將在字串列表中新增一字串,它與Add方法一樣,但不返回值。
Clear方法:該方法將清空字串列表。
Delete方法:刪除指定的字串。
Destroy方法:解構函式,毀壞一個TStrings物件例項。
IndexOf方法:function IndexOf(const S:string):integer; 該方法的功能是返回字串S在字串列表中的索引值。呼叫IndexOf函式返回的是第一次發現字串S的位置。其返回值也以0作為起點,若返回0則表示是第一個字串,返回1表示是第二個字串,依此類推。如果指定的字串S不在列表中,則返回-1。需要指出的是,若S在字串列表中出現的次數大於1,則IndexOf方法返回的是第一次發現的位置值。
Insert方法:該方法在指定位置插入一字串。其引數Index為給定的位置索引值,引數S為要插入的字串。
LoadFromFile方法:呼叫該方法將使用指定的檔案填充文字。其引數FileName用來定義檔名,檔案中行與行之間以回車和換行符隔開。事實上,LoadFromFile方法是運用Add方法將檔案中的每一行新增到字串列表中的。
SaveToFile方法:與LoadFromFile方法相對應,該方法將列表中的字串儲存於檔案中,其引數FileName用來定義檔名。
如何判斷輸入的字串是電子郵件地址
選擇“File|New Application”選單命令,在預設建立從窗體中新增1個Label元件、1個Edit元件和1個Bitbtn元件,完成各個元件的屬性設定即佈局之後,在Bitbtn元件的OnClick事件中加入如下所示的程式碼。
程式程式碼
Procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if isemail(Edit1.Text) then
ShowMessage('正確的郵件地址!')
else
showmessage('錯誤的郵件地址!');
end;

其中isemail函式的程式碼如下所示,可將其新增到單元檔案的implementation部分。
程式程式碼
Function IsEMail(EMail: String): Boolean;
var
s: String;
ETpos: Integer;
begin
ETpos:= pos('@', EMail); //獲取@符號的位置
if ETpos > 1 then 
begin 
s:= copy(EMail,ETpos+1,Length(EMail)); //擷取子串
if (pos('.', s) > 1) and (pos('.', s) < length(s)) then 
Result:= true
else 
Result:= false; 
end
else 
Result:= false; 
end;

按下F9鍵執行程式。
如何獲得字串中漢字和英文的個數
Microsoft Word具有一項“字數統計”功能,可以統計出文字中漢字和英文的個數,其設計思路就是通過把字元轉換為ASCII碼數值來進行判斷,Ord函式就可以把字元轉換為對應的ASCII碼數值,其中值為33-126為鍵盤可使用字元,值127以上的為未知字元,即漢字。下面完成一個示範程式,選擇“File|New Application”選單命令,在預設的窗體中新增1個Memo元件、2個Label元件和2個Button元件,完成對各個元件的屬性設定及佈局之後,在“字數統計”按鈕的OnClick事件中新增如下所示的程式碼。
程式程式碼
Procedure TForm1.Button1Click(Sender: TObject);
var s:string;
I,e,c:integer;
begin
s:=memo1.text; //Memo的內容
e:=0;c:=0;
for I:=1 to length(s) do
begin
if (ord(s[I])>=33)and(ord(s[I])<=126) then
begin
inc(e);
label1.caption:='英文字數:'+inttostr(e);
end
else
if (ord(s[I])>=127) then
begin
inc(c);
label2.caption:='中文字數:'+inttostr(c div 2);
end;
end;
end;

使用拼音首字母序列實現檢索功能
事實上,解決這個問題的思路很簡單。那就是要找出漢字表中拼音首字母分別為“A”到“Z”的漢字內碼範圍,這樣對於要檢索的漢字,只需要檢查它的內碼位於哪一個首字母的範圍內,就可以判斷出它的拼音首字母。
下面完成一個示範程式,選擇“File|New Application”選單命令,在預設的窗體中新增1個Label元件、1個Bevel元件、1個Edit元件和2個ListBox元件。完成對各個元件的屬性設定及佈局之後,在Edit元件的OnChange事件中新增如下所示的程式碼。
程式程式碼
Procedure TForm1.Edit1Change(Sender: TObject);
var ResultStr:string;
begin
ResultStr:='';
listbox2.Items.Text := SearchByPYIndexStr(listbox1.Items, edit1.Text);
end;

這裡所使用的SearchByPYIndexStr函式的程式碼如下所示,其功能是在字串列表中檢索符合拼音索引字串的所有字串。可將其新增到窗體單元檔案的implementation部分。
程式程式碼
Function SearchByPYIndexStr( SourceStrs:TStrings; PYIndexStr:string):string;
label NotFound;
var
i, j :integer;
hzchar :string;
begin
for i:=0 to SourceStrs.Count-1 do
begin
for j:=1 to Length(PYIndexStr) do
begin
hzchar:=SourceStrs[i][2*j-1]+ SourceStrs[i][2*j];
if (PYIndexStr[j]<>'?') and (UpperCase(PYIndexStr[j]) <>
GetPYIndexChar(hzchar)) then 
goto NotFound;
end;
if result='' then 
result := SourceStrs[i]
else 
result := result + Char(13) + SourceStrs[i];
NotFound:
end;
end;

上面程式中引用的GetPYIndexChar函式用於獲取指定漢字的拼音索引字母,如“杜”的索引字母是“D”。該函式的程式碼如下所示,也將其新增到窗體單元檔案的implementation部分。
程式程式碼
Function GetPYIndexChar( hzchar:string):char;
begin
case WORD(hzchar[1]) shl 8 + WORD(hzchar[2]) of
$B0A1..$B0C4 : result := 'A';
$B0C5..$B2C0 : result := 'B';
$B2C1..$B4ED : result := 'C';
$B4EE..$B6E9 : result := 'D';
$B6EA..$B7A1 : result := 'E';
$B7A2..$B8C0 : result := 'F';
$B8C1..$B9FD : result := 'G';
$B9FE..$BBF6 : result := 'H';
$BBF7..$BFA5 : result := 'J';
$BFA6..$C0AB : result := 'K';
$C0AC..$C2E7 : result := 'L';
$C2E8..$C4C2 : result := 'M';
$C4C3..$C5B5 : result := 'N';
$C5B6..$C5BD : result := 'O';
$C5BE..$C6D9 : result := 'P';
$C6DA..$C8BA : result := 'Q';
$C8BB..$C8F5 : result := 'R';
$C8F6..$CBF9 : result := 'S';
$CBFA..$CDD9 : result := 'T';
$CDDA..$CEF3 : result := 'W';
$CEF4..$D188 : result := 'X';
$D1B9..$D4D0 : result := 'Y';
$D4D1..$D7F9 : 

相關文章