Fortran 字符

Fortran 语言可以将字符视为单个字符或连续字符串。

字符可以是从基本字符集中提取的任何符号,即从字母、十进制数字、下划线和21个特殊字符中提取的符号。

字符常数是一个固定值的字符串。

内部数据类型字符存储字符和字符串。字符串的长度可以通过 len 说明符指定。如果没有指定长度,则为 1。您可以按位置引用字符串中的单个字符;最左侧的字符位于位置 1。

字符声明

声明字符类型数据与其他变量相同:

  1. type-specifier :: variable_name

比如:

  1. character :: reply, sex

可以这样赋值:

  1. reply = 'N'
  2. sex = 'F'

下面的实例演示了字符数据类型的声明和使用:

  1. program hello
  2. implicit none
  3. character(len = 15) :: surname, firstname
  4. character(len = 6) :: title
  5. character(len = 25)::greetings
  6. title = 'Mr. '
  7. firstname = 'Rowan '
  8. surname = 'Atkinson'
  9. greetings = 'A big hello from Mr. Bean'
  10. print *, 'Here is ', title, firstname, surname
  11. print *, greetings
  12. end program hello

结果如下:

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

连接字符串

连接运算符 // 用于连接字符。

以下实例演示了这一点:

  1. program hello
  2. implicit none
  3. character(len = 15) :: surname, firstname
  4. character(len = 6) :: title
  5. character(len = 40):: name
  6. character(len = 25)::greetings
  7. title = 'Mr. '
  8. firstname = 'Rowan '
  9. surname = 'Atkinson'
  10. name = title//firstname//surname
  11. greetings = 'A big hello from Mr. Bean'
  12. print *, 'Here is ', name
  13. print *, greetings
  14. end program hello

结果为:

  1. Here is Mr.Rowan Atkinson
  2. 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" 中的任何字符,则返回 0。

7

verify(string, chars)

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

8

adjustl(string)

它左对齐 "string" 字符串中包含的字符。

9

adjustr(string)

它右对齐 "string" 字符串中包含的字符。

10

len_trim(string)

它返回一个整数,等于 "string" (len(string)) 减去尾随空格的数量。

11

repeat(string,ncopy)

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


实例 1

此实例显示了 index 函数的使用:

  1. program testingChars
  2. implicit none
  3. character (80) :: text
  4. integer :: i
  5. text = 'The intrinsic data type character stores characters and strings.'
  6. i=index(text,'character')
  7. if (i /= 0) then
  8. print *, ' The word character found at position ',i
  9. print *, ' in text: ', text
  10. end if
  11. end program testingChars

结果为:

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

实例 2

此实例演示了 trim 功能的使用:

  1. program hello
  2. implicit none
  3. character(len = 15) :: surname, firstname
  4. character(len = 6) :: title
  5. character(len = 25)::greetings
  6. title = 'Mr.'
  7. firstname = 'Rowan'
  8. surname = 'Atkinson'
  9. print *, 'Here is', title, firstname, surname
  10. print *, 'Here is', trim(title),' ',trim(firstname),' ', trim(surname)
  11. end program hello

结果为:

  1. Here isMr. Rowan Atkinson
  2. Here isMr. Rowan Atkinson

实例 3

此实例演示了 achar 功能的使用:

  1. program testingChars
  2. implicit none
  3. character:: ch
  4. integer:: i
  5. do i = 65, 90
  6. ch = achar(i)
  7. print*, i, ' ', ch
  8. end do
  9. end program testingChars

结果为:

  1. 65 A
  2. 66 B
  3. 67 C
  4. 68 D
  5. 69 E
  6. 70 F
  7. 71 G
  8. 72 H
  9. 73 I
  10. 74 J
  11. 75 K
  12. 76 L
  13. 77 M
  14. 78 N
  15. 79 O
  16. 80 P
  17. 81 Q
  18. 82 R
  19. 83 S
  20. 84 T
  21. 85 U
  22. 86 V
  23. 87 W
  24. 88 X
  25. 89 Y
  26. 90 Z

检查字符的顺序

以下函数确定字符的顺序:

序号功能 & 描述
1

lle(char, char)

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

2

lge(char, char)

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

3

lgt(char, char)

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

4

llt(char, char)

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

实例 4

以下函数演示了使用方法:

  1. program testingChars
  2. implicit none
  3. character:: a, b, c
  4. a = 'A'
  5. b = 'a'
  6. c = 'B'
  7. if(lgt(a,b)) then
  8. print *, 'A is lexically greater than a'
  9. else
  10. print *, 'a is lexically greater than A'
  11. end if
  12. if(lgt(a,c)) then
  13. print *, 'A is lexically greater than B'
  14. else
  15. print *, 'B is lexically greater than A'
  16. end if
  17. if(llt(a,b)) then
  18. print *, 'A is lexically less than a'
  19. end if
  20. if(llt(a,c)) then
  21. print *, 'A is lexically less than B'
  22. end if
  23. end program testingChars

结果为:

  1. a is lexically greater than A
  2. B is lexically greater than A
  3. A is lexically less than a
  4. A is lexically less than B

分类导航