这些函数通过字符串搜索:
index(a1,a2) |
字符串 a1 中第一次出现的字符串 a2 的索引 |
rindex(a1,a2) |
字符串 a1 中最后一次出现的字符串 a2 的索引 |
lnblnk(a1) |
字符串 a1 中最后一个非空白字符串的索引 |
index 有以下几种形式:
索引是通过以下方式调用的内函数:
n = index( a1, a2 ) |
|||
a1 |
字符 |
输入 |
主字符串 |
a2 |
字符 |
输入 | |
返回值 |
INTEGER |
输出 |
n>0:a1 中第一次出现的 a2 的索引 n=0:a2 不在 a1 中 |
如果声明了 INTEGER*8,在针对 64 位环境进行了编译且字符变量 a1 是非常大的字符串(大于 2 GB)时,index() 将返回 INTEGER*8 值。
该函数的调用方式如下所示:
INTEGER*4 rindex n = rindex( a1, a2 ) |
|||
a1 |
字符 |
输入 |
主字符串 |
a2 |
字符 |
输入 |
子串 |
返回值 |
INTEGER*4 或 INTEGER*8 |
输出 |
n>0:a1 中最后一次出现的 a2 的索引 n=0:a2 不在 a1 中,在 64 位环境中返回 INTEGER*8 值 |
该函数的调用方式如下所示:
n = lnblnk( a1 ) |
|||
a1 |
字符 |
输入 |
字符串 |
返回值 |
INTEGER*4 或 INTEGER*8 |
输出 |
n>0:a1 中最后一个非空白字符串的索引 n=0:a1 全部不为空白,在 64 位环境中返回 INTEGER*8 值 |
示例:index()、rindex() 和 lnblnk():
demo% cat tindex.f * 123456789012345678901 character s*24 / ’abcPDQxyz...abcPDQxyz’ / INTEGER*4 declen, index, first, last, len, lnblnk, rindex declen = len( s ) first = index( s, ’abc’ ) last = rindex( s, ’abc’ ) lastnb = lnblnk( s ) write(*,*) declen, lastnb write(*,*) first, last end demo% f95 tindex.f demo% a.out 24 21 <- declen is 24 because intrinsic len() returns the declared length of s 1 13 |
对于编译为要在 64 位环境中运行的程序,必须将 index、rindex 和 lnblnk(以及它们的接收变量)声明为 INTEGER*8,以便处理非常大的字符串。