nästa upp förra innehåll
Nästa: Filhantering Upp: Fördeklarerade procedurer och funktioner Förra: Slumptal

Stränghantering

Det finns fyra inbyggda funktioner för hantering av textsträngar.
Index(target:strängtyp ; pattern:sträng- eller teckentyp ):Integer
söker efter strängen pattern i strängen target. Funktionen returnerar hur många tecken från vänster den första förekomsten av pattern börjar i target. Om target börjar med en förekomst av pattern returneras alltså 1. Specialfall: Om pattern inte förekommer alls i target returneras 0. Om pattern har längden noll returneras 1.

Length(str:strängtyp ):Integer
returnerar antalet tecken i str.

Substr(str:strängtyp ; p,n:Integer):Varying[] OF Char
ger en delsträng i en sträng. Argumenten p och n ska vara positiva heltal. Funktionen returnerar en delsträng i str som börjar med tecknet nummer p i str och innehåller n tecken i en följd därefter. Om p och n försöker indexera ett tecken utanför str:s gränser, returneras en tom sträng.

Trim(inputStr:sträng- eller teckentyp ):Varying[] OF Char
ger en likadan sträng som inputStr fast den tar bort alla blanka i slutet. Exempel: Programmet

    PROGRAM Trimtest;
     VAR
      str1, str2: Varying[100] OF Char;
    BEGIN
     str1 := 'Grisar!!     ';
     str2 := 'Svin!!';
     Writeln(Trim(str1), str2);
    END.

ger utskriften
  Grisar!!Svin!!
Observera: Om man låter returvärdet av ett Trim-anrop tilldela en strängvariabel med bestämd längd (se avsnitt 8.3), kommer de sista överflödiga positionerna (om det finns några sådana) i denna variabel i alla fall att fyllas med blanka.

Operatorn + kan användas för att slå ihop två eller flera strängar. Som exempel tar vi satsen str := 'Gris' + 'ar oc' + 'h nöff'; som alltså tilldelar variabeln str strängen 'Grisar och nöff'.

Operatorerna =, <>, <, <=, =>, > kan användas för att jämföra två strängar. Strängen x är mindre än strängen y om x kommer före i bokstavsordningen. Stora bokstäver kommer före små bokstäver, men på grund av en bugg i version 4.2 av pascalkompilatorn så kommer bokstäverna å, ä, ö före alla andra tecken.

Om man vill ha riktig svensk bokstavsordning ska man använda jämförelsefunktionen SweStrCmp(s1,s2:sträng- eller teckentyp):Integer som finns i filen
/usr/local/include/pc/strings.h. Om s1 eller s2 har fler än 256 tecken ignoreras de sista. Om s1 är alfabetiskt större än s2 returneras 1, om s1 är alfabetiskt mindre än s2 returneras -1 och om strängarna är lika returneras 0. Gemena och versala bokstäver behandlas lika, siffror är mindre än bokstäver och de svenska bokstäverna å, ä, ö, Å, Ä och Ö jämförs korrekt. Exempel:

Anrop Returvärde
SweStrCmp('ÖrA', 'åRA') 1
SweStrCmp('lab4', 'lab5') -1
SweStrCmp('lab 7', 'lab7') -1
SweStrCmp('TeX', 'tEx')  
SweStrCmp('Grisar','Gris') 1
SweStrCmp('', 'NÖFF') -1
För att få tillgång till SweStrCmp måste man ha med raden
#include '/usr/local/include/pc/strings.h'
direkt efter PROGRAM-raden i sitt program.


nästa upp förra innehåll
Nästa: Filhantering Upp: Fördeklarerade procedurer och funktioner Förra: Slumptal

Viggo Kann
Fri Aug 7 00:55:14 MET DST 1998