Fortran字符

Fortran語言可以把字符作爲單個字符或連續的字符串。

字符可以是從基本的字符集,即從字母,十進制數字,下劃線和21特殊字符所採取的任何符號。

字符常量是一個固定的值的字符串。

內部數據類型的字符存儲字符和字符串。字符串的長度可以通過len個符來指定。如果沒有指定長度,它是長度是1. 可以將字符串按位置指的是指在單個字符;最左邊的字符的位置是1。

字符聲明

聲明一個字符類型的數據是一樣的其他變量:

type-specifier :: variable_name

例如,

character :: reply, sex

可以指定一個值類似,

reply = ‘N’ sex = ‘F’

下面的例子演示了聲明和使用字符數據類型:

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. Beans' print *, 'Here is ', title, firstname, surname print *, greetings end program hello

當編譯並執行上述程序,將產生以下結果:

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

字符串接

連接運算符//符,連接字符。

下面的例子說明了這一點:

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. Beans' print *, 'Here is ', name print *, greetings end program hello

當編譯並執行上述程序,將產生以下結果:

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

一些字符函數

下表顯示描述一些常用字符的函數:

函數

描述

len(string)

它返回字符串的長度

index(string,sustring)

在一個字符串找出子串的位置,如果沒有找到則返回0。

achar(int)

將整數轉換成一個字符

iachar(c)

它可將一個字符轉換爲整數

trim(string)

它返回去掉尾隨空格的字符串。

scan(string, chars)

它會搜索「string」由左到右(除非back=.true)包含在「string」任何字符的第一次出現。它返回一個整數,該字符,或零的位置,如果沒有文字的「字符」已被找到。

verify(string, chars)

它掃描「string」由左到右(除非back=.true)不包含在「string」任何字符的第一次出現。它返回一個整數,該字符的位置,如果只在「字符」的字符被找到,或者沒有找則返回零。

adjustl(string)

它留下左截於「string」包含的字符

adjustr(string)

它留下右截於「string」包含的字符

len_trim(string)

它返回一個整數等於「string」(len(string))減去尾隨空白的數量

repeat(string,ncopy)

它返回一個字符串長度等於「ncopy」次數「string」的長度,並含有「string」的「ncopy」串聯拷貝

實例 1

這個例子顯示使用index函數:

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

當編譯並執行上述程序,將產生以下結果:

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

示例 2

這個例子演示瞭如何使用trim函數:

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

當編譯並執行上述程序,將產生以下結果:

Here is Mr. Rowan Atkinson
Here is Mr. Rowan Atkinson

示例 3

這個例子演示瞭如何使用achar函數

program testingChars implicit none

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

當編譯並執行上述程序,將產生以下結果:

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

檢查詞法順序字符

下面的函數確定的字符的詞法序列:

函數

描述

lle(char, char)

進行比較的第一個字符是否是詞彙上小於或等於所述第二字符

lge(char, char)

進行比較的第一個字符是否是詞彙上大於或等於所述第二字符

lgt(char, char)

進行比較的第一個字符是否是詞彙上比第二字符大

llt(char, char)

比較第一個字符是否是詞彙上比小於第二字符

示例 4

下面的函數演示瞭如何使用:

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

當編譯並執行上述程序,將產生以下結果:

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