Tekststreng

Tekststreng, fra , bruges i sammenhæng med programmering og skriptsprog, og betegner en sekvens (string, dvs. tråd eller streng) af tegn.

Det er en trivial og enkel betegnelse der altså til gengæld optræder i en relativt specialiseret sammenhæng. Umiddelbart er en tekststreng lettest at forestille sig som eksempelvis et citat, altså et tekstfragment. I den specialiserede sammenhæng vil tekststrengen i visse tilfælde - eksempelvis i programmeringssproget C - bestå af enkeltelementer med en specifik datatype: Char .

Strengkonstanter 
Der er flere almindelige måder at skrive strengkonstanter i forskellige programmeringssprog.

Den mest almindelige syntaks, er at skrive teksten direkte, omgivet af anførselstegn: "Dette er en streng." I visse sprog, som fx Perl og PHP fortolkes variable indeholdt i denne slags strenge. Denne slags sprog giver som oftest mulighed for at skrive strenge omgivet af apostroffer, hvis dette ej ønskes: 'Denne $variabel fortolkes ikke.'

Strenge med specifikke krav 
En tekststreng kan indeholde et udvalg eller alle tegn fra et tegnsæt. Hvis et tegn (fx ASCII-NULL) er reserveret til at være tekststrengsafslutning (eng. terminator), kan dette ikke anvendes andre steder i tekststrengen. I sproget Pascal er et tekststrengsobjekt defineret til at have en positionsstart og en længde. Pascal behøver derfor ikke at anvende en tekststrengsafslutning.

I forbindelse med oversættere har programmeringsprog designeren brug for at kræve bestemte krav til tekststrengsindhold (leksikalsk analyse). Testen kan fx gøres med EBNF og regulære udtryk.

Fx kan man kræve at et variabel skal indeholde US-ASCII-tegn som er US-alfanumeriske; en eller flere (US-bogstav eller cifre). En streng som kun består af US-alfanumeriske tegn, kaldes en US-alfanumerisk tekststreng. En US-alfanumerisk tekststreng kan skrives i EBNF som:

US_bogstav = "A" | "B" | "C" | "D" | "E" | "F" | "G"
       | "H" | "I" | "J" | "K" | "L" | "M" | "N"
       | "O" | "P" | "Q" | "R" | "S" | "T" | "U"
       | "V" | "W" | "X" | "Y" | "Z" | "a" | "b"
       | "c" | "d" | "e" | "f" | "g" | "h" | "i"
       | "j" | "k" | "l" | "m" | "n" | "o" | "p"
       | "q" | "r" | "s" | "t" | "u" | "v" | "w"
       | "x" | "y" | "z" ;

ciffer = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;

US_alfanumerisk = ( US_bogstav | ciffer ) { US_bogstav | ciffer } ;

En US-alfanumerisk tekststreng kan skrives i et regulært udtryk som: [a-zA-Z0-9]([a-zA-Z0-9])*

Repræsentationer 
Strenge kan repræsenteres på mange måder, hver med deres fordele og ulemper. Her følger de mest almindelige repræsentationer:

Nul-termineret 
En nul-termineret streng udgøres af en sekvens af tegn, afsluttet med ASCII NUL-tegnet char endstr = '\0'; Denne slags streng kaldes ofte en C-streng, idet det er en gængs form, blandt andet i C's standard programbibliotek.

Længde præfiks 
En streng gemt med længde præfiks udgøres af en strenglængde, efterfulgt af det af længden specificerede antal tegn. Denne slags streng kaldes ofte en Pascal-streng, idet det er repræsentationen der bruges i Pascal.

Heredoc 
Et heredoc, fra , benyttes i scripts om en speciel art I/O re-dirigering. I den forbindelse kan længere tekststrenge specificeres.
 Perl eksempel
 my $tekst = <<END;
 Dette er en lang tekst.
 Den kan indeholde linjeskift og $variable.
 Teksten fortsætter indtil der står "END" på sin egen linje.
 END
Men heredocs kan være meget andet end det .

Eksterne links 
 , fra linfo.org

Kilder 
 
 

Programmering