Pascal - Chuỗi

Chuỗi trong Pascal thực chất là một chuỗi ký tự với quy cách kích thước tùy chọn. Các ký tự có thể là số, chữ cái, trống, ký tự đặc biệt hoặc kết hợp của tất cả. Extended Pascal cung cấp nhiều loại đối tượng chuỗi tùy thuộc vào hệ thống và cách triển khai. Chúng ta sẽ thảo luận về các loại chuỗi phổ biến hơn được sử dụng trong các chương trình.

Bạn có thể xác định một chuỗi theo nhiều cách -

  • Character arrays - Đây là một chuỗi ký tự là một chuỗi không hoặc nhiều ký tự có kích thước byte được đặt trong dấu nháy đơn.

  • String variables - Biến kiểu String, như định nghĩa trong Turbo Pascal.

  • Short strings - Biến kiểu String với đặc tả kích thước.

  • Null terminated strings - Biến của pchar kiểu.

  • AnsiStrings - Ansistrings là chuỗi không giới hạn độ dài.

Pascal chỉ cung cấp một toán tử chuỗi, toán tử nối chuỗi (+).

Ví dụ

Chương trình sau sẽ in ra bốn loại chuỗi đầu tiên. Chúng ta sẽ sử dụng AnsiStrings trong ví dụ tiếp theo.

program exString;
var
   greetings: string;
   name: packed array [1..10] of char;
   organisation: string[10];
   message: pchar;

begin
   greetings := 'Hello ';
   message := 'Good Day!';
   
   writeln('Please Enter your Name');
   readln(name);
   
   writeln('Please Enter the name of your Organisation');
   readln(organisation);
   
   writeln(greetings, name, ' from ', organisation);
   writeln(message); 
end.

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

Please Enter your Name
John Smith
Please Enter the name of your Organisation
Infotech
Hello John Smith from Infotech

Ví dụ sau sử dụng thêm một số chức năng, hãy xem:

program exString;
uses sysutils;
var
   str1, str2, str3 : ansistring;
   str4: string;
   len: integer;

begin
   str1 := 'Hello ';
   str2 := 'There!';
   
   (* copy str1 into str3 *)
   str3 := str1;
   writeln('appendstr( str3, str1) :  ', str3 );
   
   (* concatenates str1 and str2 *)
   appendstr( str1, str2);
   writeln( 'appendstr( str1, str2) ' , str1 );
   str4 := str1 + str2;
   writeln('Now str4 is: ', str4);
   
   (* total lenghth of str4 after concatenation  *)
   len := byte(str4[0]);
   writeln('Length of the final string str4: ', len); 
end.

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau:

appendstr( str3, str1) : Hello
appendstr( str1, str2) : Hello There!
Now str4 is: Hello There! There!
Length of the final string str4: 18

Các hàm và thủ tục trong chuỗi Pascal

Pascal hỗ trợ một loạt các hàm và thủ tục thao tác với chuỗi. Các chương trình con này khác nhau về cách triển khai. Ở đây, chúng tôi liệt kê các chương trình con thao tác chuỗi khác nhau được cung cấp bởi Free Pascal -

Sr.No. Chức năng & Mục đích
1

function AnsiCompareStr(const S1: ; const S2:):Integer;

So sánh hai chuỗi

2

function AnsiCompareText(const S1: ; const S2:):Integer;

So sánh hai chuỗi, không phân biệt chữ hoa chữ thường

3

function AnsiExtractQuotedStr(var Src: PChar; Quote: Char):;

Xóa dấu ngoặc kép khỏi chuỗi

4

function AnsiLastChar(const S:):PChar;

Nhận ký tự cuối cùng của chuỗi

5

function AnsiLowerCase(const s:):

Chuyển đổi chuỗi thành toàn chữ thường

6

function AnsiQuotedStr(const S: ; Quote: Char):;

Trích dẫn một chuỗi

7

function AnsiStrComp(S1: PChar;S2: PChar):Integer;

So sánh chuỗi phân biệt chữ hoa chữ thường

số 8

function AnsiStrIComp(S1: PChar; S2: PChar):Integer;

So sánh các chuỗi phân biệt chữ hoa chữ thường

9

function AnsiStrLComp(S1: PChar; S2: PChar; MaxLen: Cardinal):Integer;

So sánh L ký tự của chuỗi phân biệt chữ hoa chữ thường

10

function AnsiStrLIComp(S1: PChar; S2: PChar; MaxLen: Cardinal):Integer;

So sánh L ký tự của chuỗi phân biệt chữ hoa chữ thường

11

function AnsiStrLastChar(Str: PChar):PChar;

Nhận ký tự cuối cùng của chuỗi

12

function AnsiStrLower(Str: PChar):PChar;

Chuyển đổi chuỗi thành toàn chữ thường

13

function AnsiStrUpper(Str: PChar):PChar;

Chuyển chuỗi thành toàn chữ hoa

14

function AnsiUpperCase(const s:):;

Chuyển chuỗi thành toàn chữ hoa

15

procedure AppendStr(var Dest: ; const S:);

Thêm 2 chuỗi

16

procedure AssignStr(var P: PString; const S:);

Gán giá trị của chuỗi trên heap

17

function CompareStr(const S1: ; const S2:):Integer; overload;

So sánh hai chuỗi phân biệt chữ hoa chữ thường

18

function CompareText(const S1: ; const S2:):Integer;

So sánh hai chuỗi không phân biệt chữ hoa chữ thường

19 procedure DisposeStr(S: PString); overload;

Xóa chuỗi khỏi heap

20

procedure DisposeStr(S: PShortString); overload;

Xóa chuỗi khỏi heap

21

function IsValidIdent( const Ident:):Boolean;

Chuỗi có phải là mã định danh pascal hợp lệ không

22

function LastDelimiter(const Delimiters: ; const S:):Integer;

Lần xuất hiện cuối cùng của ký tự trong một chuỗi

23

function LeftStr(const S: ; Count: Integer):;

Nhận N ký tự đầu tiên của một chuỗi

24

function LoadStr(Ident: Integer):;

Tải chuỗi từ tài nguyên

25

function LowerCase(const s: ):; overload;

Chuyển đổi chuỗi thành toàn chữ thường

26

function LowerCase(const V: variant ):; overload;

Chuyển đổi chuỗi thành toàn chữ thường

27

function NewStr(const S:):PString; overload;

Phân bổ chuỗi mới trên heap

28

function RightStr(const S: ; Count: Integer):;

Nhận N ký tự cuối cùng của một chuỗi

29

function StrAlloc(Size: Cardinal):PChar;

Cấp phát bộ nhớ cho chuỗi

30

function StrBufSize(Str: PChar):SizeUInt;

Dành bộ nhớ cho một chuỗi

31

procedure StrDispose(Str: PChar);

Xóa chuỗi khỏi heap

32

function StrPas(Str: PChar):;

Chuyển đổi PChar thành chuỗi pascal

33

function StrPCopy(Dest: PChar; Source:):PChar;

Sao chép chuỗi mật khẩu

34

function StrPLCopy(Dest: PChar; Source: ; MaxLen: SizeUInt):PChar;

Sao chép N byte của chuỗi pascal

35

function UpperCase(const s:):;

Chuyển chuỗi thành toàn chữ hoa