📅  最后修改于: 2020-11-04 06:16:33             🧑  作者: Mango
Fortran语言可以将字符视为单个字符或连续的字符串。
的可以是唯一一个在长度字符,或者它甚至可以是零长度的。在Fortran中,字符常量在一对双引号或单引号之间给出。
固有数据类型字符存储字符和字符串。字符串的长度可以由len specifier指定。如果未指定长度,则为1。可以按位置引用字符串的各个字符;否则,可以为0。最左边的字符在位置1。
声明字符串与其他变量相同-
type-specifier :: variable_name
例如,
Character(len = 20) :: firstname, surname
您可以分配一个值,例如
character (len = 40) :: name
name = “Zara Ali”
以下示例演示了字符数据类型的声明和使用-
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 isMr. 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
在Fortran中,可以通过对字符串进行索引来从字符串提取子字符串,在一对方括号中给出子字符串的开始和结束索引。这称为范围说明符。
以下示例显示如何从字符串“ hello world”中提取子字符串“ world”-
program subString
character(len = 11)::hello
hello = "Hello World"
print*, hello(7:11)
end program subString
当您编译并执行上述程序时,它将产生以下结果-
World
以下示例使用date_and_time函数提供日期和时间字符串。我们使用范围说明符分别提取年,日,月,时,分和秒信息。
program datetime
implicit none
character(len = 8) :: dateinfo ! ccyymmdd
character(len = 4) :: year, month*2, day*2
character(len = 10) :: timeinfo ! hhmmss.sss
character(len = 2) :: hour, minute, second*6
call date_and_time(dateinfo, timeinfo)
! let’s break dateinfo into year, month and day.
! dateinfo has a form of ccyymmdd, where cc = century, yy = year
! mm = month and dd = day
year = dateinfo(1:4)
month = dateinfo(5:6)
day = dateinfo(7:8)
print*, 'Date String:', dateinfo
print*, 'Year:', year
print *,'Month:', month
print *,'Day:', day
! let’s break timeinfo into hour, minute and second.
! timeinfo has a form of hhmmss.sss, where h = hour, m = minute
! and s = second
hour = timeinfo(1:2)
minute = timeinfo(3:4)
second = timeinfo(5:10)
print*, 'Time String:', timeinfo
print*, 'Hour:', hour
print*, 'Minute:', minute
print*, 'Second:', second
end program datetime
当您编译并执行上述程序时,它会提供详细的日期和时间信息-
Date String: 20140803
Year: 2014
Month: 08
Day: 03
Time String: 075835.466
Hour: 07
Minute: 58
Second: 35.466
trim函数采用字符串,并在删除所有尾随空格后返回输入字符串。
program trimString
implicit none
character (len = *), parameter :: fname="Susanne", sname="Rizwan"
character (len = 20) :: fullname
fullname = fname//" "//sname !concatenating the strings
print*,fullname,", the beautiful dancer from the east!"
print*,trim(fullname),", the beautiful dancer from the east!"
end program trimString
当您编译并执行上述程序时,它将产生以下结果-
Susanne Rizwan , the beautiful dancer from the east!
Susanne Rizwan, the beautiful dancer from the east!
函数Adjustl接受一个字符串,并通过删除前导空格并将其附加为尾随空格来返回它。
函数调节器获取一个字符串,并通过删除尾随空格并将它们附加为前导空格来返回它。
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'
greetings = 'A big hello from Mr. Beans'
name = adjustl(title)//adjustl(firstname)//adjustl(surname)
print *, 'Here is', name
print *, greetings
name = adjustr(title)//adjustr(firstname)//adjustr(surname)
print *, 'Here is', name
print *, greetings
name = trim(title)//trim(firstname)//trim(surname)
print *, 'Here is', name
print *, greetings
end program hello
当您编译并执行上述程序时,它将产生以下结果-
Here is Mr. Rowan Atkinson
A big hello from Mr. Bean
Here is Mr. Rowan Atkinson
A big hello from Mr. Bean
Here is Mr.RowanAtkinson
A big hello from Mr. Bean
index函数采用两个字符串,并检查第二个字符串是否是第一个字符串的子字符串。如果第二个参数是第一个参数的子字符串,则它返回一个整数,该整数是第二个字符串在第一个字符串的起始索引,否则返回零。
program hello
implicit none
character(len=30) :: myString
character(len=10) :: testString
myString = 'This is a test'
testString = 'test'
if(index(myString, testString) == 0)then
print *, 'test is not found'
else
print *, 'test is found at index: ', index(myString, testString)
end if
end program hello
当您编译并执行上述程序时,它将产生以下结果-
test is found at index: 11