Sun Studio 12:Fortran 库参考

1.4.27 index、rindex 和 lnblnk:子串的索引或长度

这些函数通过字符串搜索:

index(a1,a2)

字符串 a1 中第一次出现的字符串 a2 的索引

rindex(a1,a2)

字符串 a1 中最后一次出现的字符串 a2 的索引

lnblnk(a1)

字符串 a1 中最后一个非空白字符串的索引

index 有以下几种形式:

1.4.27.1 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 值。

1.4.27.2 rindex:字符串中最后一次出现某子串

该函数的调用方式如下所示:

INTEGER*4 rindex

n = rindex( a1, a2 )

a1

字符

输入 

主字符串 

a2

字符

输入 

子串 

返回值 

INTEGER*4 INTEGER*8

输出 

n>0:a1 中最后一次出现的 a2 的索引

n=0:a2 不在 a1 中,在 64 位环境中返回 INTEGER*8

1.4.27.3 lnblnk:字符串中最后一个非空白字符串

该函数的调用方式如下所示:

n = lnblnk( a1 )

a1

字符

输入 

字符串 

返回值 

INTEGER*4INTEGER*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 位环境中运行的程序,必须将 indexrindexlnblnk(以及它们的接收变量)声明为 INTEGER*8,以便处理非常大的字符串。