pos()

阅读(2503) 标签: pos,

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

A.pos(x,k)

描述:

获取序列成员位置序号。

语法:

A.pos(x,k)

备注:

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

参数:

A

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

x

序列成员。

k

从第k个成员开始寻找。

选项:

@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

11

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

5

注意:

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

相关概念:

A.pos(x)

A.psort()

A.pos(x)

描述:

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

语法:

A.pos(x)

备注:

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

参数:

A

序列

x

序列

选项:

@i

获取单递增数列。

@c

获取序列A中连续子序列x第一次出现的位置。

@b

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

返回值:

数列

示例:

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

[3,4,1],获取序列[1,4,6]的成员在序列[6,2,1,4,6,3,7,8]中的第1次出现的位置组成的数列。

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

null,序列[1,4, 9]的成员9在序列[6,2,1,4,6,3,7,8]中找不到,所以返回结果为null

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

[3,4,5],获取序列[1,4,6]的成员在序列[6,2,1,4,6,3,7,8]中的位置组成的数列,使用@i选项,要求获取的数列为单递增数列。

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

[6,1,4]

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

null,使用@i选项,由于序列[6,2,1,4,6,3,7,8]中不存在位置为单递增数列的子序列[3,6,4],所以返回结果为null

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

3,获取 [2,1,4,6,3,7,8,4,6,1]中连续子序列[4,6],第一次出现的位置

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

[3,1,4,5][1,2,3,4,6,7,8]为有序序列,可使用二分法查找

相关概念:

A.pos()

A.psort()

pos()

描述:

查找母串中子串的位置。

语法

pos(s1, s2{, begin})

备注

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

参数:

s1

待查找子串的母串。

s2

被查找的子串。

begin

查找的起始位置缺省为1

返回值:

整型

选项:

@z

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

@c

大小写不敏感。

@h

只比头部,忽略begin

@q

引号内的跳过。

@w

仅查找整词。

示例:

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选项大小写不敏感。

pos ("a'b'cbe","b")

3

pos@q("a'b'cbe","b")

6,使用@q选项引号内的跳过。

pos("aab,aa","aa")

1

pos@w("aab,aa","aa")

5,使用@w选项仅查找整词。

pos@h("abcdef","abc",3)

1,使用@h选项,只比头部,即从参数s1的第一个字符位置开始查找,忽略参数begin