Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1832230
  • 博文数量: 438
  • 博客积分: 9799
  • 博客等级: 中将
  • 技术积分: 6092
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-25 17:25
文章分类

全部博文(438)

文章存档

2019年(1)

2013年(8)

2012年(429)

分类: C/C++

2012-03-26 13:19:37

字符串的声明方式如下:
CHARACTER[(LEN=整型字符长度表达式[,KIND=种别值])][,属性说明] :: 变量名表[=初始值]

前面已经提到字符的种别只能是1,但是它有一个len的选项。比如:CHARACTER(LEN=12,KIND=1) :: A,B或CHARACTER(KIND=1,LEN=12) :: A,B,len和kind可以省去,但len值必须在前面,如character(12, 1) :: A, B,种别值也可以省略:character(12) :: A, B,它等价于character*12 :: A, B。

字符的长度在声明时可以用*表示为不确定,比如character(len=*), parameter :: c = "abcde"。这行等同于C语言里的const char[] c = "abcde";。只有声明为parameter属性或者过程哑元(dummy argument)时,才可以使用不确定的长度。(哑元在后面介绍)。

字符子串可以通过s(a:b)方式得到,比如s为“abcdefg”,s(3:5), s(:3), s(5:), s(:), s(4:4)分别返回:cde、abc、efgh、abcdefgh和d。注意fortran中索引从1开始,而不是从0开始。子串可以进行赋值,比如 s(3:5) = "xyz"。赋值时,如果左边变量的长度更小,则只取右边字符串的前面一部分;如果左边变量长度更大,则在多出的部分补空格。

//操作符可以把两个字符串拼接,比如s//"tommy",可以产生一个新的字符串。

可以用<、>、==和\=比较两个字符串,区分大小写。"Tommy"和"tommy"是不等的。字符串末尾的空格会被忽略,比如"tommy  "与"tommy"是相等的,但字符串开头的空格不会被忽略,比如"  tommy"和"tommy"就是不等的。此外还有比较字符大小的函数:LGE、LGT、LLE、LLT

引用方式

含   义

LGE(a1,a2)

a1是否≥a2

LGE(‘A’,‘B’)值为假

LGT(a1,a2)

a1是否>a2

LGT(‘A’,‘B’)值为假

LLE(a1,a2)

a1是否≤a2

LLE(‘A’,‘B’)值为真

LLT(a1,a2)

a2是否<a2

LLT(‘A’,‘B’)值为真

其它与字符串相关的函数


  1. program string
  2.       character c
  3.       character*8 :: s
  4. !字符与数值的转换
  5.       iValue = ichar("a") !97-返回字符的序号值
  6.       iValue = iachar("a"); !97-返回字符的ascii码
  7.       !iValue = iachar("ab") !Error: Argument of IACHAR at (1) must be of length one
  8.       c = char(97) !a-返回序号值对应的字符
  9.       c = achar(97) !a-返回ascii码对应的字符
  10. !字符串的长度
  11.       iLen = len("abcdefg"); !7
  12.       iLen = len("abcdefg "); !9
  13.       iLen = len_trim("abcdefg "); !7 去除尾部空格后的长度
  14. !查找子串,找不到返回0
  15.       iIndex = index("abcdefg", "cde"); !3
  16.       iIndex = index("abcdefg", "abcxyz"); !0
  17. !验证第一个参数里的所有字符是否属于第二个参数表示的字符集,如果都属于则返回0,否则返回
  18. 第一个不属于字符集的索引。
  19.       iIndex = verify("bcd", "abcdefg"); !0
  20.       iIndex = verify("bcdxyz", "abcdefg"); !4
  21. !去除末尾的空格
  22.       s = trim("abcd ") // "efg" !abcdefg
  23.       end

阅读(3034) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~