Tekststreng

Tekststreng, fra engelsk: string, 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 (Fischer 2008).

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 engelsk: here document, 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"  sin egen linje.
 END

Men heredocs kan være meget andet end det (Cooper 2014).

Kilder

  • Elias Fischer (2008), "Strings (Zeichenketten)", Das C Tutorial, c-howto.de
  • Cooper, Mendel (2014), "Chapter 19. Here Documents", Advanced Bash-Scripting Guide, tldp.org

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!