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)
    它从左到右搜索“字符串”(除非 back=.true。)以查找“字符”中包含的任何字符的第一次出现。它返回一个整数,给出该字符的位置,如果没有找到“chars”中的任何字符,则返回零。
    7
    verify(string, chars)
    它从左到右扫描“字符串”(除非 back=.true。)以查找“字符”中不包含的任何字符的第一次出现。它返回一个整数,给出该字符的位置,如果只找到“chars”中的字符,则返回零
    8
    adjustl(string)
    它左对齐包含在“字符串”中的字符
    9
    adjustr(string)
    它正确地证明了“字符串”中包含的字符
    10
    len_trim(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
    
  • 检查字符的词汇顺序

    以下函数确定字符的词汇序列 -
    序号 功能说明
    1
    lle(char, char)
    比较第一个字符在词法上是否小于或等于第二个字符
    2
    lge(char, char)
    比较第一个字符在词法上是否大于或等于第二个字符
    3
    lgt(char, char)
    比较第一个字符在词法上是否大于第二个字符
    4
    llt(char, char)
    比较第一个字符在词法上是否小于第二个字符
    Example 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