如何在Fortran中检查字符是大写还是小写



在Fortran中,有哪些库函数(如果有的话((我使用的是gfortran 11(会返回字符是大写还是小写?

character :: c
c = 'l'
print *, is_lower(c) ! should display 'T'
print *, is_upper(c) ! should display 'F'
c = 'L'
print *, is_upper(c) ! should display 'T'

我应该用什么来代替is_loweris_upper?我可以试着自己滚动,但比较运算符对字符来说足够奇怪,我不能确定我到底在做什么。

多亏了@High Performance Mark的帮助,我有了这种检查每个字符的方法:

module char_cases
implicit none
private
public :: is_upper_ascii, is_lower_ascii
character(len=26), parameter :: uca = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
character(len=26), parameter :: lca = 'abcdefghijklmnopqrstuvwxyz'
contains
pure elemental logical function is_upper_ascii(ch)
character, intent(in) :: ch
is_upper_ascii = index(uca, ch) /= 0
end function is_upper_ascii
pure elemental logical function is_lower_ascii(ch)
character, intent(in) :: ch
is_lower_ascii = index(lca, ch) /= 0
end function is_lower_ascii
end module char_cases

您可以使用ascii比较。。。将c转换为整数形式的iachar,并将其与大写字符的边界(从65到90(或小写字符的边界进行比较(从97到122(,这是有限的解决方案,因为它不会处理像ÉÉ这样的大写或小写奇怪字符

最新更新