Fortran字符 - 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. Beans'
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. Beans'
print *, 'Here is ', name
print *, greetings
end program hello
当编译并执行上述程序,将产生以下结果:
Here is Mr.Rowan Atkinson
A big hello from Mr.Bean
一些字符函数
下表显示描述一些常用字符的函数:
函数 | 描述 |
---|---|
len(string) | 它返回字符串的长度 |
index(string,sustring) | 在一个字符串找出子串的位置,如果没有找到则返回0。 |
achar(int) | 将整数转换成一个字符 |
iachar(c) | 它可将一个字符转换为整数 |
trim(string) | 它返回去掉尾随空格的字符串。 |
scan(string, chars) | 它会搜索“string”由左到右(除非back=.true)包含在“string”任何字符的第一次出现。它返回一个整数,该字符,或零的位置,如果没有文字的“字符”已被找到。 |
verify(string, chars) | 它扫描“string”由左到右(除非back=.true)不包含在“string”任何字符的第一次出现。它返回一个整数,该字符的位置,如果只在“字符”的字符被找到,或者没有找则返回零。 |
adjustl(string) | 它留下左截于“string”包含的字符 |
adjustr(string) | 它留下右截于“string”包含的字符 |
len_trim(string) | 它返回一个整数等于“string”(len(string))减去尾随空白的数量 |
repeat(string,ncopy) | 它返回一个字符串长度等于“ncopy”次数“string”的长度,并含有“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 is Mr. Rowan Atkinson
Here is Mr. 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
检查词法顺序字符
下面的函数确定的字符的词法序列:
函数 | 描述 |
---|---|
lle(char, char) | 进行比较的第一个字符是否是词汇上小于或等于所述第二字符 |
lge(char, char) | 进行比较的第一个字符是否是词汇上大于或等于所述第二字符 |
lgt(char, char) | 进行比较的第一个字符是否是词汇上比第二字符大 |
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