ปาสคาล - สตริง
สตริงในภาษาปาสคาลเป็นลำดับของอักขระที่มีข้อกำหนดขนาดที่เป็นทางเลือก อักขระอาจเป็นตัวเลขตัวอักษรว่างอักขระพิเศษหรือรวมกันทั้งหมด Extended Pascal มีอ็อบเจ็กต์สตริงหลายประเภทขึ้นอยู่กับระบบและการนำไปใช้งาน เราจะพูดถึงประเภทของสตริงทั่วไปที่ใช้ในโปรแกรม
คุณสามารถกำหนดสตริงได้หลายวิธี -
Character arrays - นี่คือสตริงอักขระซึ่งเป็นลำดับของอักขระขนาดศูนย์หรือมากกว่าไบต์ที่อยู่ในเครื่องหมายคำพูดเดี่ยว
String variables - ตัวแปรประเภท String ตามที่กำหนดใน Turbo Pascal
Short strings - ตัวแปรประเภท String พร้อมข้อกำหนดขนาด
Null terminated strings - ตัวแปรของ pchar ชนิด.
AnsiStrings - Ansistrings คือสตริงที่ไม่จำกัดความยาว
Pascal มีตัวดำเนินการสตริงเพียงตัวเดียวคือตัวดำเนินการต่อสตริง (+)
ตัวอย่าง
โปรแกรมต่อไปนี้จะพิมพ์สตริงสี่ชนิดแรก เราจะใช้ AnsiStrings ในตัวอย่างถัดไป
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.
เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานจะให้ผลลัพธ์ดังนี้ -
Please Enter your Name
John Smith
Please Enter the name of your Organisation
Infotech
Hello John Smith from Infotech
ตัวอย่างต่อไปนี้ใช้ประโยชน์จากฟังก์ชั่นอื่น ๆ อีกเล็กน้อยมาดูกัน -
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.
เมื่อโค้ดด้านบนถูกคอมไพล์และเรียกใช้งานจะให้ผลลัพธ์ดังนี้ -
appendstr( str3, str1) : Hello
appendstr( str1, str2) : Hello There!
Now str4 is: Hello There! There!
Length of the final string str4: 18
ฟังก์ชันและขั้นตอนปาสคาลสตริง
Pascal รองรับฟังก์ชันและโพรซีเดอร์ที่หลากหลายที่จัดการกับสตริง โปรแกรมย่อยเหล่านี้แตกต่างกันไปในการใช้งานที่ชาญฉลาด ที่นี่เราแสดงรายการสตริงต่างๆที่จัดการโปรแกรมย่อยที่จัดทำโดย Free Pascal -
ซีเนียร์ | ฟังก์ชั่นและวัตถุประสงค์ |
---|---|
1 | function AnsiCompareStr(const S1: ; const S2:):Integer; เปรียบเทียบสองสตริง |
2 | function AnsiCompareText(const S1: ; const S2:):Integer; เปรียบเทียบสองสตริงโดยไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ |
3 | function AnsiExtractQuotedStr(var Src: PChar; Quote: Char):; ลบเครื่องหมายคำพูดจากสตริง |
4 | function AnsiLastChar(const S:):PChar; รับอักขระสุดท้ายของสตริง |
5 | function AnsiLowerCase(const s:): แปลงสตริงเป็นตัวพิมพ์เล็กทั้งหมด |
6 | function AnsiQuotedStr(const S: ; Quote: Char):; ใส่เครื่องหมายคำพูดสตริง |
7 | function AnsiStrComp(S1: PChar;S2: PChar):Integer; เปรียบเทียบสตริงที่คำนึงถึงขนาดตัวพิมพ์ |
8 | function AnsiStrIComp(S1: PChar; S2: PChar):Integer; เปรียบเทียบสตริงที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ |
9 | function AnsiStrLComp(S1: PChar; S2: PChar; MaxLen: Cardinal):Integer; เปรียบเทียบอักขระ L ของสตริงที่คำนึงถึงขนาดตัวพิมพ์ |
10 | function AnsiStrLIComp(S1: PChar; S2: PChar; MaxLen: Cardinal):Integer; เปรียบเทียบอักขระ L ของสตริงที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ |
11 | function AnsiStrLastChar(Str: PChar):PChar; รับอักขระสุดท้ายของสตริง |
12 | function AnsiStrLower(Str: PChar):PChar; แปลงสตริงเป็นตัวพิมพ์เล็กทั้งหมด |
13 | function AnsiStrUpper(Str: PChar):PChar; แปลงสตริงเป็นตัวพิมพ์ใหญ่ทั้งหมด |
14 | function AnsiUpperCase(const s:):; แปลงสตริงเป็นตัวพิมพ์ใหญ่ทั้งหมด |
15 | procedure AppendStr(var Dest: ; const S:); ต่อท้าย 2 สตริง |
16 | procedure AssignStr(var P: PString; const S:); กำหนดค่าของสตริงบนฮีป |
17 | function CompareStr(const S1: ; const S2:):Integer; overload; เปรียบเทียบสองสตริงที่คำนึงถึงตัวพิมพ์เล็กและใหญ่ |
18 | function CompareText(const S1: ; const S2:):Integer; เปรียบเทียบสองสตริงที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ |
19 | procedure DisposeStr(S: PString); overload; ลบสตริงออกจากฮีป |
20 | procedure DisposeStr(S: PShortString); overload; ลบสตริงออกจากฮีป |
21 | function IsValidIdent( const Ident:):Boolean; เป็นสตริงตัวระบุปาสคาลที่ถูกต้อง |
22 | function LastDelimiter(const Delimiters: ; const S:):Integer; การเกิดครั้งสุดท้ายของอักขระในสตริง |
23 | function LeftStr(const S: ; Count: Integer):; รับอักขระ N ตัวแรกของสตริง |
24 | function LoadStr(Ident: Integer):; โหลดสตริงจากทรัพยากร |
25 | function LowerCase(const s: ):; overload; แปลงสตริงเป็นตัวพิมพ์เล็กทั้งหมด |
26 | function LowerCase(const V: variant ):; overload; แปลงสตริงเป็นตัวพิมพ์เล็กทั้งหมด |
27 | function NewStr(const S:):PString; overload; จัดสรรสตริงใหม่บนฮีป |
28 | function RightStr(const S: ; Count: Integer):; รับอักขระ N ตัวสุดท้ายของสตริง |
29 | function StrAlloc(Size: Cardinal):PChar; จัดสรรหน่วยความจำสำหรับสตริง |
30 | function StrBufSize(Str: PChar):SizeUInt; สงวนหน่วยความจำสำหรับสตริง |
31 | procedure StrDispose(Str: PChar); ลบสตริงออกจากฮีป |
32 | function StrPas(Str: PChar):; แปลง PChar เป็นสตริงปาสคาล |
33 | function StrPCopy(Dest: PChar; Source:):PChar; คัดลอกสตริงปาสคาล |
34 | function StrPLCopy(Dest: PChar; Source: ; MaxLen: SizeUInt):PChar; คัดลอก N ไบต์ของสตริงปาสคาล |
35 | function UpperCase(const s:):; แปลงสตริงเป็นตัวพิมพ์ใหญ่ทั้งหมด |