Pascal 字符串

  • 字符串

    Pascal中的字符串实际上是具有可选大小规格的字符序列。字符可以是数字,字母,空格,特殊字符或所有字符的组合。扩展Pascal提供了多种类型的字符串对象,具体取决于系统和实现。我们将讨论程序中使用的更常见的字符串类型。您可以通过多种方式定义字符串-
    • 字符数组 - 这是一个字符串,由零个或多个字节大小的字符组成,并用单引号引起来。
    • 字符串变量 - 字符串类型的变量,如Turbo Pascal中所定义。
    • 短字符串 - 具有大小规格的String类型变量。
    • 空终止的字符串 - 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 字符串函数和过程

    Pascal支持各种操作字符串的函数和过程。这些子程序在实施方面有所不同。在这里,我们列出了Free Pascal提供的各种字符串操作子程序-
    函数 OR 过程 描述
    function AnsiCompareStr(const S1: ; const S2:):Integer; 比较两个字符串
    function AnsiCompareText(const S1: ; const S2:):Integer; 比较两个字符串,不区分大小写
    function AnsiExtractQuotedStr(var Src: PChar; Quote: Char):; 从字符串中删除引号
    function AnsiLastChar(const S:):PChar; 获取字符串的最后一个字符
    function AnsiLowerCase(const s:): 将字符串转换为全小写
    function AnsiQuotedStr(const S: ; Quote: Char):; 引号
    function AnsiStrComp(S1: PChar;S2: PChar):Integer; 比较区分大小写的字符串
    function AnsiStrIComp(S1: PChar; S2: PChar):Integer; 比较不区分大小写的字符串
    function AnsiStrLComp(S1: PChar; S2: PChar; MaxLen: Cardinal):Integer; 比较字符串的L个字符区分大小写
    function AnsiStrLIComp(S1: PChar; S2: PChar; MaxLen: Cardinal):Integer; 比较不区分大小写的字符串的L个字符
    function AnsiStrLastChar(Str: PChar):PChar; 获取字符串的最后一个字符
    function AnsiStrLower(Str: PChar):PChar; 将字符串转换为全小写
    function AnsiStrUpper(Str: PChar):PChar; 将字符串转换为全大写
    function AnsiUpperCase(const s:):; 将字符串转换为全大写
    procedure AppendStr(var Dest: ; const S:); 追加2个字符串
    procedure AssignStr(var P: PString; const S:); 在堆上分配字符串值
    function CompareStr(const S1: ; const S2:):Integer; overload; 比较两个字符串区分大小写
    function CompareText(const S1: ; const S2:):Integer; 比较不区分大小写的两个字符串
    procedure DisposeStr(S: PString); overload; 从堆中删除字符串
    procedure DisposeStr(S: PShortString); overload; 从堆中删除字符串
    function IsValidIdent( const Ident:):Boolean; 字符串是有效的Pascal标识符吗
    function LastDelimiter(const Delimiters: ; const S:):Integer; 字符串中字符的最后一次出现
    function LeftStr(const S: ; Count: Integer):; 获取字符串的前N个字符
    function LoadStr(Ident: Integer):; 从资源加载字符串
    function LowerCase(const s: ):; overload; 将字符串转换为全小写
    function LowerCase(const V: variant ):; overload; 将字符串转换为全小写
    function NewStr(const S:):PString; overload; 在堆上分配新字符串
    function RightStr(const S: ; Count: Integer):; 获取字符串的最后N个字符
    function StrAlloc(Size: Cardinal):PChar; 为字符串分配内存
    function StrBufSize(Str: PChar):SizeUInt; 为字符串保留内存
    procedure StrDispose(Str: PChar); 从堆中删除字符串
    function StrPas(Str: PChar):; 将PChar转换为pascal字符串
    function StrPCopy(Dest: PChar; Source:):PChar; 复制帕斯卡字符串
    function StrPLCopy(Dest: PChar; Source: ; MaxLen: SizeUInt):PChar; 复制N个字节的Pascal字符串
    function UpperCase(const s:):; 将字符串转换为全大写