pos()

阅读(729) 标签: pos,

本章介绍pos()函数的多种用法。

A.pos()

描述:

获取序列成员位置序号

语法:

A.pos(x)

备注:

定位成员x在序列A中的位置,x可能在A中重复出现。返回值由选项决定,默认返回第一个出现的位置,找不到则返回null

参数:

A

序列对象或返回序列对象的表达式

x

序列成员

选项:

@b

表示默认为有序序列,使用二分法查找,递增或者递减均可

@a

返回满足条件的所有结果,因此返回结果是一个n数列

@z

从最后一个成员往前查找,默认从第一个成员往后查找

@s

A中成员有序,在用二分法查找时,当xA成员时返回其位置;当xA成员时,返回x按顺序可插入位置序号的相反数。

@p

x是序列时当作单值处理,此时A是序列的序列

@n

找不到序列成员时返回A的长度加1,与@a互斥

返回值:

序号,或者由序号组成的序列

示例:

 

A

 

1

=[1,2,8,4,5,6,7,8]

 

2

=A1.pos(8)

3

3

=A1.pos@a(8)

[3,8]

4

=A1.pos@z(8)

8

5

=A1.pos@az(8)

[8,3]

6

=A1.pos@z(9)

null

7

=[1,2,3,4,5,6,7,8].pos@b(5)

5

8

=[1,2,4,5,6,7,8].pos@s(3)

-3

9

=[[6,2,1,4,6,3,7,8],[1,4,6]].pos@p([1,4,6])

2

10

=[6,2,1,4,6,3,7,8].pos@n(5)

9

注意:

如果A不是有序序列,不能使用@b@s这个选项,会导致返回的结果不正确,例如:[7,6,1,2,3].pos@b(3)返回空

相关概念:

A.pos(x)

A.psort()

A.pos(x)

描述:

获取序列中成员在另一个序列中的位置

语法:

A.pos(x)

备注:

获取序列x中成员在另一个序列A中的位置,找不到返回空。

参数:

A

序列

x

序列

选项:

@i

返回单递增数列

@c

返回序列xA中第一次出现的位置,以便求序列A中子序列x出现的位置,若x不是A的子序列则返回空。

@b

表示默认A为有序序列,使用二分法查找,递增或者递减均可

返回值:

单递增数列或数列

示例:

[6,2,1,4,6,3,7,8].pos@i([1,4,6])

[3,4,5], 此时返回的是单递增数列

[6,2,1,4,6,3,7,8].pos([1,4, 6]) 

[3,4,1], 此时返回的是数列

[1,2,3,4,6,7,8].pos@b([3,1,4,6])

[3,1,4,5]

[2,1,4,6,3,7,8].pos@i([8,4,6])

null

[2,1,4,6,3,7,8,4,6,1].pos@c([4,6])

[3]

相关概念:

A.pos()

A.psort()

pos()

描述:

查找母串中子串的位置

语法

pos(s1, s2{, begin})

备注

查找母串s1中起始位置为begin的子串s2的位置找不到返回null

参数:

s1

待查找子串的母串

s2

被查找的子串

begin

查找的起始位置缺省为1

返回值:

整型

选项:

@z

begin开始往前查找,缺省从begin开始往后查找

@c

大小写不敏感

@h

只比头部,忽略begin

示例:

pos("abcdef","def")

4

pos("abcdefdef","def",5)

7

pos("abcdef","defa")

(null)

pos@z("abcdeffdef","def",7)

4

pos("abcdeffdef","def",7)

8

pos@c("abcdef","Def")

4,使用@c选项大小写不敏感