Fortran - 字元



Fortran 語言可以將字元視為單個字元或連續字串。

字元可以是取自基本字元集的任何符號,即字母、十進位制數字、下劃線和 21 個特殊字元。

字元常量是固定值的字元字串。

內在資料型別character儲存字元和字串。字串的長度可以透過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. Bean'
   
   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. Bean'
   
   print *, 'Here is ', name
   print *, greetings
   
end program hello

編譯並執行上述程式時,會產生以下結果 -

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

一些字元函式

下表顯示了一些常用的字元函式及其描述 -

序號 函式及描述
1

len(string)

它返回字元字串的長度

2

index(string,sustring)

它查詢另一個字串中子字串的位置,如果未找到則返回 0。

3

achar(int)

它將整數轉換為字元

4

iachar(c)

它將字元轉換為整數

5

trim(string)

它返回刪除了尾隨空格的字串。

6

scan(string, chars)

它從左到右搜尋“string”(除非 back=.true.)以查詢“chars”中包含的任何字元的第一次出現。它返回一個整數,給出該字元的位置,如果未找到“chars”中的任何字元,則返回零。

7

verify(string, chars)

它從左到右掃描“string”(除非 back=.true.)以查詢“chars”中不包含的任何字元的第一次出現。它返回一個整數,給出該字元的位置,如果僅找到“chars”中的字元,則返回零

8

adjustl(string)

它左對齊“string”中包含的字元

9

adjustr(string)

它右對齊“string”中包含的字元

10

len_trim(string)

它返回一個整數,等於“string”的長度 (len(string)) 減去尾隨空格的數量

11

repeat(string,ncopy)

它返回一個字串,其長度等於“string”長度的“ncopy”倍,並且包含“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 isMr.   Rowan          Atkinson       
 Here isMr. 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

檢查字元的詞法順序

以下函式確定字元的詞法順序 -

序號 函式及描述
1

lle(char, char)

比較第一個字元在詞法上是否小於或等於第二個字元

2

lge(char, char)

比較第一個字元在詞法上是否大於或等於第二個字元

3

lgt(char, char)

比較第一個字元在詞法上是否大於第二個字元

4

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
廣告

© . All rights reserved.