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. 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

长度(字符串)

它返回字符串的长度

2

索引(字符串,sustring)

它查找子字符串在另一个字符串中的位置,如果未找到则返回 0。

3

阿查尔(整数)

它将整数转换为字符

4

iachar(c)

它将字符转换为整数

5

修剪(字符串)

它返回删除了尾随空格的字符串。

6

扫描(字符串、字符)

它从左到右搜索“字符串”(除非 back=.true),以查找“chars”中包含的任何字符的第一次出现。它返回一个给出该字符位置的整数,如果没有找到“chars”中的任何字符,则返回零。

7

验证(字符串,字符)

它从左到右扫描“字符串”(除非 back=.true),以查找“字符”中未包含的任何字符的第一次出现。它返回一个整数,给出该字符的位置,如果仅找到“chars”中的字符,则返回零

8

调整(字符串)

它左对齐“字符串”中包含的字符

9

调节器(绳)

它正确对齐“字符串”中包含的字符

10

len_trim(字符串)

它返回一个整数,等于“string”的长度 (len(string)) 减去尾随空格的数量

11

重复(字符串,ncopy)

它返回一个长度等于“ncopy”乘以“string”长度的字符串,并包含“ncopy”连接的“string”副本

实施例1

这个例子展示了索引函数的使用-

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

此示例演示了修剪功能的使用-

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(字符,字符)

比较第一个字符在词法上是否小于或等于第二个字符

2

lge(字符,字符)

比较第一个字符在词法上是否大于或等于第二个字符

3

LGT(字符,字符)

比较第一个字符在词法上是否大于第二个字符

4

llt(字符,字符)

比较第一个字符在词法上是否小于第二个字符

实施例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