Fortran - Charaktere

Die Fortran-Sprache kann Zeichen als einzelne Zeichen oder zusammenhängende Zeichenfolgen behandeln.

Zeichen können beliebige Symbole sein, die aus dem Grundzeichensatz stammen, dh aus den Buchstaben, den Dezimalstellen, dem Unterstrich und 21 Sonderzeichen.

Eine Zeichenkonstante ist eine Zeichenfolge mit festem Wert.

Der intrinsische Datentyp characterspeichert Zeichen und Zeichenfolgen. Die Länge der Zeichenfolge kann durch angegeben werdenlenSpezifizierer. Wenn keine Länge angegeben ist, ist es 1. Sie können einzelne Zeichen innerhalb einer Zeichenfolge nach Position referenzieren. Das Zeichen ganz links befindet sich an Position 1.

Zeichendeklaration

Das Deklarieren von Zeichentypdaten ist dasselbe wie bei anderen Variablen -

type-specifier :: variable_name

Zum Beispiel,

character :: reply, sex

Sie können einen Wert wie z.

reply = ‘N’ 
sex = ‘F’

Das folgende Beispiel zeigt die Deklaration und Verwendung des Zeichendatentyps -

program hello
implicit none

   character(len = 15) :: surname, firstname 
   character(len = 6) :: title 
   character(len = 25)::greetings
   
   title = 'Mr. ' 
   firstname = 'Rowan ' 
   surname = 'Atkinson'
   greetings = 'A big hello from Mr. Bean'
   
   print *, 'Here is ', title, firstname, surname
   print *, greetings
   
end program hello

Wenn Sie das obige Programm kompilieren und ausführen, erhalten Sie das folgende Ergebnis:

Here is Mr. Rowan Atkinson       
A big hello from Mr. Bean

Verkettung von Zeichen

Der Verkettungsoperator // verkettet Zeichen.

Das folgende Beispiel zeigt dies -

program hello
implicit none

   character(len = 15) :: surname, firstname 
   character(len = 6) :: title 
   character(len = 40):: name
   character(len = 25)::greetings
   
   title = 'Mr. ' 
   firstname = 'Rowan ' 
   surname = 'Atkinson'
   
   name = title//firstname//surname
   greetings = 'A big hello from Mr. Bean'
   
   print *, 'Here is ', name
   print *, greetings
   
end program hello

Wenn Sie das obige Programm kompilieren und ausführen, erhalten Sie das folgende Ergebnis:

Here is Mr.Rowan Atkinson       
A big hello from Mr.Bean

Einige Zeichenfunktionen

Die folgende Tabelle zeigt einige häufig verwendete Zeichenfunktionen zusammen mit der Beschreibung -

Sr.Nr. Bedienungsanleitung
1

len(string)

Es gibt die Länge einer Zeichenfolge zurück

2

index(string,sustring)

Es findet die Position eines Teilstrings in einer anderen Zeichenfolge und gibt 0 zurück, wenn es nicht gefunden wird.

3

achar(int)

Es konvertiert eine Ganzzahl in ein Zeichen

4

iachar(c)

Es konvertiert ein Zeichen in eine Ganzzahl

5

trim(string)

Es gibt die Zeichenfolge mit entfernten Leerzeichen zurück.

6

scan(string, chars)

Es durchsucht die "Zeichenfolge" von links nach rechts (außer back = .true.) Nach dem ersten Auftreten eines in "Zeichen" enthaltenen Zeichens. Es wird eine Ganzzahl zurückgegeben, die die Position dieses Zeichens angibt, oder Null, wenn keines der Zeichen in "Zeichen" gefunden wurde.

7

verify(string, chars)

Es durchsucht die "Zeichenfolge" von links nach rechts (außer back = .true.) Nach dem ersten Auftreten eines Zeichens, das nicht in "Zeichen" enthalten ist. Es wird eine Ganzzahl zurückgegeben, die die Position dieses Zeichens angibt, oder Null, wenn nur die Zeichen in "Zeichen" gefunden wurden

8

adjustl(string)

Es links rechtfertigt Zeichen in der "Zeichenfolge" enthalten

9

adjustr(string)

Es rechtfertigt die in der "Zeichenfolge" enthaltenen Zeichen

10

len_trim(string)

Es wird eine Ganzzahl zurückgegeben, die der Länge von "string" (len (string)) abzüglich der Anzahl der nachgestellten Leerzeichen entspricht

11

repeat(string,ncopy)

Es wird eine Zeichenfolge zurückgegeben, deren Länge gleich "ncopy" mal der Länge von "string" ist und die mit "ncopy" verkettete Kopien von "string" enthält.

Beispiel 1

Dieses Beispiel zeigt die Verwendung von index Funktion -

program testingChars
implicit none

   character (80) :: text 
   integer :: i 
   
   text = 'The intrinsic data type character stores characters and   strings.'
   i=index(text,'character') 
   
   if (i /= 0) then
      print *, ' The word character found at position ',i 
      print *, ' in text: ', text 
   end if
   
end program testingChars

Wenn Sie das obige Programm kompilieren und ausführen, erhalten Sie das folgende Ergebnis:

The word character found at position 25
in text : The intrinsic data type character stores characters and strings.

Beispiel 2

Dieses Beispiel zeigt die Verwendung von trim Funktion -

program hello
implicit none

   character(len = 15) :: surname, firstname 
   character(len = 6) :: title 
   character(len = 25)::greetings
   
   title = 'Mr.' 
   firstname = 'Rowan' 
   surname = 'Atkinson'
   
   print *, 'Here is', title, firstname, surname
   print *, 'Here is', trim(title),' ',trim(firstname),' ', trim(surname)
   
end program hello

Wenn Sie das obige Programm kompilieren und ausführen, erhalten Sie das folgende Ergebnis:

Here isMr.   Rowan          Atkinson       
 Here isMr. Rowan Atkinson

Beispiel 3

Dieses Beispiel zeigt die Verwendung von achar Funktion -

program testingChars
implicit none

   character:: ch
   integer:: i
   
   do i = 65, 90
      ch = achar(i)
      print*, i, ' ', ch
   end do
   
end program testingChars

Wenn Sie das obige Programm kompilieren und ausführen, erhalten Sie das folgende Ergebnis:

65  A
66  B
67  C
68  D
69  E
70  F
71  G
72  H
73  I
74  J
75  K
76  L
77  M
78  N
79  O
80  P
81  Q
82  R
83  S
84  T
85  U
86  V
87  W
88  X
89  Y
90  Z

Überprüfen der lexikalischen Reihenfolge der Zeichen

Die folgenden Funktionen bestimmen die lexikalische Zeichenfolge -

Sr.Nr. Bedienungsanleitung
1

lle(char, char)

Vergleicht, ob das erste Zeichen lexikalisch kleiner oder gleich dem zweiten ist

2

lge(char, char)

Vergleicht, ob das erste Zeichen lexikalisch größer oder gleich dem zweiten ist

3

lgt(char, char)

Vergleicht, ob das erste Zeichen lexikalisch größer als das zweite ist

4

llt(char, char)

Vergleicht, ob das erste Zeichen lexikalisch kleiner als das zweite ist

Example 4

Die folgende Funktion demonstriert die Verwendung -

program testingChars
implicit none

   character:: a, b, c
   a = 'A'
   b = 'a'
   c = 'B'
   
   if(lgt(a,b)) then
      print *, 'A is lexically greater than a'
   else
      print *, 'a is lexically greater than A'
   end if
   
   if(lgt(a,c)) then
      print *, 'A is lexically greater than B'
   else
      print *, 'B is lexically greater than A'
   end if  
   
   if(llt(a,b)) then
      print *, 'A is lexically less than a'
   end if
   
   if(llt(a,c)) then
      print *, 'A is lexically less than B'
   end if
   
end program testingChars

Wenn Sie das obige Programm kompilieren und ausführen, erhalten Sie das folgende Ergebnis:

a is lexically greater than A
B is lexically greater than A
A is lexically less than a
A is lexically less than B