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