Delphi字符串的基本操作與常用函數


參考:http://www.cnblogs.com/pchmonster/archive/2011/12/16/2290034.html

結合這個博客一起學習:http://www.cnblogs.com/xumenger/p/4427957.html

 

在實際編程中,這些操作會經常用到的。開始你不用着急全部記住它們,只要知道有這些功能就行,需要用到的時候能查到即可。

1、用 + 操作符實現字符串的連接

1
2
3
4
5
6
7
8
9
10
11
12
var
   X: Integer ;
   S1: string ;
   S2: string ;
begin
   S1 := 'Hello' ;
   S2 := 'World' ;
   ShowMessage(S1 + ' '  + S2); { 連接了三個字符串S1,S2,和空格字符串}
 
   X := 2011 ;
   ShowMessage( '今年是 '  + IntToStr(X)); { IntToStr函數將整型轉換為字符串類型}
end ;

顯示的消息框依次為:

2、腳標操作符[ ]

用腳標操作符可以從一個字符串中提取個別字符。

1
2
3
4
5
6
7
8
var
   S1: string ;
   S2: string ;
begin
   S1 := 'Hello World' ;
   S2 := S1[ 1 ];
   ShowMessage(S2);  { 將獲取S1字符串的第一個字符H}
end ;

字符串是從1開始的,字符串中的第一個字符是在S[1]中,短字符串(ShortString)的0元素(S[0])包含了字符串的長度,而不是字符串的第一個字符,在長字符串(AnsiString)和寬字符串(WideString)中不能存取X[0]。ShortString可以訪問X[0]

 

  注意:定義一個字符串

s: string;

  進行賦值

s:= 'Text';

  進行下面的測試可以知道s 是一個指針,而且所指向的地址是和 @s[1]一樣的

ShowMessage(
    IntToStr(Sizeof(s))        //這里顯示的結果是 4
    +IntToStr(s) + IntToStr(@s[1])        //這里輸出的 s的值和 s[1]的地址是一樣的
);

  

 

3、字符串中的控制字符

字符串常量( string literal  or string constant)一般用兩個單引號引起來,如果要字符串本身也有單引號,需要用兩個單引號表示,如下:

1
2
3
4
5
'BORLAND'            { BORLAND }
'You' 'll see'        { You'll see }
'' ''                 { ' }
''                   { null string }
' '                  { a space }

在字符串中可以嵌入控制字符,當需要在字符串中增加一些非打印字符時,這個功能是非常有用的。字符串中嵌入控制字符用以發送給串行設備。

用字符#就可以為字符串增加控制字符,例如:

1
2
3
4
5
6
7
8
var
   S1: string ;
   S2: string ;
begin
   S1 := # 89 # 111 # 117 ;
   S2 := 'You' ;       { 實際上S1和S2是一樣}
   ShowMessage(S1 + # 13 # 10  + S2); { #13#10表示換行回車carriage-return-line-feed}
end ;

運行后顯示效果如下:

4、用多行代碼擴展字符串

用單引號引起來的字符串叫做字符串常量( string literal or string constant),其最多只能有255個字符。

為了增強可讀性和可維護性,把一個字符串分成多行是必要的,需要用到+操作符,例如:

1
2
3
4
ShowMessage( 'This is very, very long message '  +
   'that seems to go on and on forever. In order '  +
   'to make the code more readable the message has '  +
   'been split across several lines of code.' );

5、字符串的比較

字符串比較操作符包括:=(等於)、<>(不等)、<(小於)、>(大於)、<=(小於或等於)、>=(大於或等於)。

這些操作符比較字符串都是基於ASCII數值。在大部分的情況下,只需要用等號來判別字符串是否等於一個定值或者不等於一個定值。例如:

1
2
3
4
5
6
7
8
9
var
   S1: string ;
begin
   S1 := 'Hello World' ;
   if  S1 = 'Hello World'  then
     ShowMessage( '相等' )     { 將顯示“相等”的消息框}
   else
     ShowMessage( '不相等' );
end ;

運行結果如下:

6、字符串操作的函數

基本常用的字符串操作函數都定義在System或者SysUtils單元中,我們就用一段范例講解下基本常用的字符串函數的用法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
const
   S1: ShortString  = 'Hello World' ;
var
   X: Integer ;
   SP: PChar ;
   S2: string ;
   RS: string ; { 顯示最后的結果}
begin
   SP := 'Pchar' ;
 
   //copy函數獲取從最后一個字符開始,共一個字符
   S2 := Copy(S1, Length(S1), 1 );  { S2 = 'd'}
   RS := RS + S2 + # 13 # 10 ;
 
   //刪除字符串中指定位置字符的Delete函數
   S2 := S1;
   Delete(S2, 1 , 1 );               { S2 = 'ello World'}
   RS := RS + S2 + # 13 # 10 ;
 
   //格式化字符串Format函數
   S2 := Format( 'Time is : %d:%d:%d' , [ 12 , 15 , 40 ]);
   { S2 = 'Time is : 12:15:40'}
   {%d表示將在這里放置一個整數,[2011]表示放置2011這個數值}
   RS := RS + S2 + # 13 # 10 ;
 
   //數值轉換為字符串InttoStr函數
   X := 65535 ;
   S2 := IntToStr(X); { S2 = '65535'}
   RS := RS + S2 + # 13 # 10 ;
 
   //獲取字符串長度Length函數
   X := Ord(S1[ 0 ]);   { X = 11,Ord函數的作用:Char 類型與其編碼值的轉換}
   X := Length(S1);   { 因為S1為ShortString類型,所以可以通過S1[0]來獲取字符長度}
   RS := RS + IntToStr(X) + # 13 # 10 ;
 
   //轉化為小寫LowerCase函數
   S2 := LowerCase(S1);  { S2 = 'hello world'}
   RS := RS + S2 + # 13 # 10 ;
 
   //轉化為大寫UpperCase函數
   S2 := UpperCase(S1);  { S2 = 'HELLO WORLD'}
   RS := RS + S2 + # 13 # 10 ;
 
   //返回指定字符重復的字符串
   S2 := StringOfChar( 'A' , 10 );  { S2 = 'AAAAAAAAAA'}
   RS := RS + S2 + # 13 # 10 ;
 
   //StrPas把一個空結尾字符串(PChar或字符數組)轉化為Pascal字符串
   S2 := StrPas(SP);    { S2 = 'Pchar'}
   RS := RS + S2 + # 13 # 10 ;
 
   //StrPCopy把一個Pascal字符串轉化為空結尾字符串
   StrPCopy(SP, 'World Hello' );   { SP = 'World Hello'}
   RS := RS + StrPas(SP) + # 13 # 10 ;
 
   //Trim用於去除字符串前后的空格和控制字符,不能去掉中間的空格和控制字符
   S2 := # 13 # 10 ' Hello World   ' ;
   S2 := Trim(S2);            { S2 = 'Hello World'}
   RS := RS + S2 + # 13 # 10 ;
 
   //StringReplace用於替換字符串中制定字符
   S2 := 'AABBCC' ;
   S2 := StringReplace(S2, 'A' , 'E' , [rfReplaceAll]);
   RS := RS + S2 + # 13 # 10 ;
 
   ShowMessage(RS);
end ;

運行結果如下:

以上代碼均在Delphi7中測試成功。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM