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

一些字符函数

下表显示了一些常用的字符函数及其说明 −

Sr.No 函数 & 描述
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)

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

示例 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

检查字符的词汇顺序

以下函数确定字符的词汇序列 −

Sr.No 函数 & 描述
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