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 |