求解VFP中substr函数

求解VFP中substr函数,第1张

substr(字符串,m,n) 函数是将字符串,从m位开始,取n个字符出来

substr("abcdef",3,2)="cd"

substr("abcdef",2,4)="bcde"

参数n可省略,表示从m位开始取到字符串末尾

substr("abcdef",3)="cdef"

汉字占两位

SUBSTR()函数

VFP字符函数的一种。表示的是字符型函数。格式是:SUBSTR(<字符表达式>、<数值表达式1>[,<数值表达式2>]

语法格式一

SUBSTR(cExpression,nStartPosition [,nCharactersReturned])

其中,cExpression指定要从其中返回字符串的字符表达式或备注字段;nStartPosition用于指定返回的字符串在字符表达式或备注字段中的位置,nCharactersReturned用于指定返回的字符数目,缺省时返回字符表达式的值结束前的全部字符。

举例

STORE'abcdefghijklm' To mystring

SUBSTR(mystring ,1,5) 显示 "abcde"

SUBSTR(mystring ,6) 显示 "fghijklm"

SUBSTR(mystring,-2)显示"lm"

SUBSTR(mystrng,-4)显示"jklm"、

语法格式二

SUBSTR(char A,char B,int C, int D)

这个函数主要用于字符串的运算,参数A是字符数组或是指向字符串的指针,用于接收字符串,参数B一般也为字符数组或指向字符串的指针,表示要截取字符串的地方,参数C表示从B中截取字符串的起始位置,参数D表示要截取字符串的长度,缺省时返回字符表达式的值结束前B的全部字符。

上述表达式功能可描述为:从字符串B的第C个字符处开始,截取长度为D的一串字符串,放入字符串数组A中,返回截取的字符串。

举例: ch X S[]="abcdefgh" 调用substr(X,S,4,2)后,得到的结果是:"ef"

stuffc(“abcdef”,2,4,“ok”)会首先把字符串“abcdef”中的从第2位起的4个字符去掉(也就是去掉“bcde”剩下了“af”),再用字符串“ok”填充回刚才的位置,结果是“aokf”。

stuffc被称为字符串替换函数,参数可理解为下面这样:

stuffc(“被替换 *** 作的字符串”,从第几位开始替换,替换掉多少位,“用来替换的字符串”)

需要注意的是:被去掉的字符个数不必要和用来替换的字符串字符个数相同,只是拿掉这些字符再在同样位置安进去用来替换的字符串而已。

为了让你明白我说得有些罗嗦了,其实明白后这个函数还是很简单的。但愿能帮到你!

VF常用命令和程序命令一、主要命令:

1、CREATE

作用:建立一个新的表。

格式:CREATE [<文件>|](注意,命令字符可取前面四个字符,后面可省略不写,即CREA

,下同;中括号表示其中的参数是可选的;|管道符号表示两个参数只能选择一个,不能同

时选择,下同。)

说明:文件指建立以dbf为扩展名的VFP数据库文件,在命令后面加上一个问号表示系统会

d出

对话框,要求用户输入想要建立的表名。在命令中不加文件名或问号系统也会d出对话框,

要求用

户输入想要建立的表名。

2、MODIFY STRUCTURE

作用:显示表文件结构,并允许修改此表的结构。

格式:MODIFY STRUCTURE

说明:只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。

3、APPEND

作用:在当前表的尾部(无论表中有无记录)追加记录(在当前表指当前正使用的表)。

格式:APPEND [BLANK]

说明:在APPEND命令后面加上BLANK参数表示在当前表的尾部添加一条空白记录。无BLANK参

数时,表示在当前表的尾部添加一条记录并要求用户输入相应的字段内容。

4、INSERT

作用:在表文件中间插入一个新记录。

格式:INSERT [BEFORE] [BLANK]

说明:INSERT 在当前记录后插入一记录;

INSERT BEFORE 在当前记录前插入一记录;

INSERT BEFORE BLANK 在当前记录前插入一空记录。

5、BROWSE

作用:主要用于打开浏览窗口,查阅表文件并同时进行修改。

格式:BROWSE

6、USE

作用:打开和关闭表文件。

格式:USE [<文件名>]

USE

说明:前一个命令用来打开<文件名>指定的表文件,该表如有备注型字段,则同时打开相应

备注文件(fpt文件);后一个命令关闭当前打开的表文件。

7、LIST和DISPLAY

作用:显示表(dbf)的内容、结构或状态。

格式:LIST|DISPLAY [OFF] [<范围>] [FIELDS] <表达式表> [WHILE <条件>] [FOR <条件

>]

[TO PRINT|TO FILE <文件>]

LIST|DISPLAY STRUCTURE TO PRINT|TO FILE <文件>]

LIST|DISPLAY STATUS [TO PRINT|TO FILE <文件>]

说明:命令带OFF参数表示不显示记录号,范围指定对哪些记录进行 *** 作,范围包括:

RECORD n

第几号记录、NEXT n 当前记录开始的几个记录、REST 自当前记录开始至文件末尾的所有记

录、ALL

所有的记录。不选范围则隐含范围为ALL;FIELDS后跟字段名,字段名与字段名之间用逗号

隔。WHILE后跟条件,FOR后面也跟条件,区别是,WHILE后的条件如果满足,便停止查找;

FOR后的

条件查找所有满足条件的记录。TO PRINT和TO FILE <文件>分别表示将显示结果在打印机上

打印出

来和将显示结果输出到文件。DISPLAY命令在显示记录满屏后,要求用户按任意键继续显示

,并且在

该命令中,如果省略范围仅显示当前记录。格式中,下面两个命令分别为显示表结构(

STRUCTURE)和工作状态(STATUS)。

8、记录的定位

作用:用记录指针(POINTER)定位记录。

格式:GO[TO] RECORD n|TOP|BOTTOM

n

SKIP [+|-]

说明:第一个命令又叫绝对定位,其中,RECORD n定位到n号记录,TOP定位到第1个记录,

BOTTOM定位到最后一个记录。第二个命令定位到第n个记录,n是一个数值。第三个命令又叫

相对定

位,它以当前记录为基准前移(-)或后移(+)n个记录,不选任选项,则默认记录指针后

移一个记录。

9、CHANGE和EDIT

作用:显示要编辑或修改的字段。

格式:CHANGE|EDIT [<范围>] [FIELDS <字段名表>] [WHILE <条件>] [FOR <条件>]

10、BROWSE

作用:打开一个"浏览"窗口,供用户浏览或修改记录。

格式:BROWSE [FIELDS <字段名表>]

11、REPLACE

作用:用表达式的值代替命令中与之相对应的字段的内容。

格式:REPLACE [<范围>] <字段1> WITH <表达式1>[,<字段2> WITH <表达式2>] [FOR <条

件>

] [WHILE<条件>]

12、DELETE、PACK、ZAP和RECALL

作用:分别是给要删除的记录作删除标记、彻底删除、删除所有记录和取消被选中的表记录

删除标志。

格式:DELETE [<范围>] [WHILE<条件>] [FOR <条件>] (特例:DELETE FILE

FILENAMEDBF,

该命令删除指定的表文件)

PACK

ZAP

RECALL [<范围>] [FOR <条件>] [WHILE<条件>]

13、SORT和INDEX

作用:分别是建立一个其记录以新的物理顺序排列的新表文件和对当前表根据关键字表达式

的值

从小到大排列,并存入TO后指定的索引文件名的文件或复合索引文件的一个标识中。

格式:SORT TO <文件名> ON <字段名1> [/A] [/C] [/D][,<字段名2> [/A] [/C]

[/D]]

[ASCENDING|DESCENDING] [<范围>] [FOR <条件>] [WHILE<条件>] [FIELDS<字段表>]

INDEX ON <关键字表达式> TO <文件名>

INDEX ON <关键字表达式> TAG <标识名> [OF <文件名>] [FOR <条件>]

说明:第1个命令中,/A按字段名升序排序,/D按字段名降序排序,/C忽略大小写,针对字

符型

关键字而言,ASCENDING和DESCENDING分别表示升序和降序。第1个命令建立dbf表文件,第

2个命令

建立idx单一索引文件,第3个命令建立cdx复合索引文件(Compound Index)。

14、USE <表文件名> INDEX <索引文件名表>、SET INDEX TO和SET ORDER TO

作用:分别是打开表文件的同时打开索引文件、打开索引文件和改变主索引。

格式:USE <表文件名> INDEX <索引文件名表>

SET INDEX TO [<索引文件名表>]

SET ORDER TO [<索引文件名>](特例:重新索引命令:REINDEX)

15、FIND、SEEK和LOCATE及CONTINUE

作用:前两个命令FIND和SEEK是在一个已经建立了索引文件的表中,定位到关键字中的内容

与命

令行中字符串相同的第一个记录。后一个命令在用USE打开表文件以后,直接查询表中字段

内容。

格式:FIND <"字符串">|<字符串>

SEEK <表达式>

LOCATE [<范围>] [FOR <条件>] [WHILE<条件>]

CONTINUE

说明:FIND命令与SEEK命令的区别是前者后跟字符串,而后者后跟表达式。在用LOCATE命令

找到

一个匹配记录后,可用CONTINUE命令搜索表的剩余部分来寻找其他匹配的记录。

16、COUNT

作用:统计当前表文件中符合条件的记录数。

格式:COUNT [<范围>] [FOR <条件>] [WHILE<条件>] [TO <内存变量名>]

说明:内存变量名可用除参数外的任意字符。

17、SUM

作用:对当前表中选中记录的全部或指定的数值字段或由指定字段组成的数值表达式累加求

和。

格式:SUM [<范围>] [数值<表达式>] [TO <内存变量名表>] [FOR <条件>] [WHILE<条件>]

18、AVERAGE

作用:对当前表中选中记录的全部或部分数值型字段及其组成的表达式求平均值并显示。

格式:AVERAGE [<范围>] [数值<表达式>] [TO <内存变量名表>] [FOR <条件>] [WHILE<条

件>]

二、常用函数

1、数学函数

函数 用途

ABS(<数值表达式>) 绝对值,|x|

CEILING(<数值表达式>) >=自变量的最小整数

EXP(<数值表达式>) 对基E的幂,e=271828

FLOOR(<数值表达式>) <=自变量的最大整数

INT(<数值表达式>) 取整(舍尾)自变量

LOG(<数值表达式>) 自变量的自然对数,ln x

LOG10(<数值表达式>) 自变量的普通对数,lg x

MAX(<表达式1>,<表达式2>) 两个值的最大值

MIN(<表达式1>,<表达式2>) 两个值的最小值

MOD(<数值表达式1>,<数值表达式2>) 求余数

RAND([<数值表达式1>]) 返回伪随机数

ROUND(<数值表达式1>,<数值表达式2>) 四舍五入第一个自变量

SIGN(<数值表达式>) 自变量的符号

SQRT(<数值表达式>) 平方根(正根)

2、字符串 *** 作函数

函数 用途

&<内存变量> 用于代替内存变量内容

LEN(<字符串表达式>) 返回字符串表达式的字符个数

SPACE(<数值表达式>) 生成空格

SUBSTR(<字符串表达式>,<数值表达式n>[,<数值表达式L>]) 求子字符串,从指定的字

符串表达式第n个开始,总长为L的字符串

LOWER(<字符串表达式>) 将字符串字母转换成小写字母

UPPER(<字符串表达式>) 将字符串字母转换成大写字母

TRIM(<字符串表达式>) 删除字符串尾空格

ASC(<字符串表达式>) 返回字符串表达式最左边的第一个字符的ASCII码

CHR(<数值表达式>) 将数值表达式转换成字符

AT(<字符串表达式1>,<字符串表达式2>[,<数值表达式n>]) 确定字符串表达式1在字符

串表达式2中的位置,n为字符串表达式第几次出现

STR(<数值表达式>[,<数值表达式L>][,<数值表达式n>) 将数值转换为字符串,L为数值

表达式总长,n为小数位数

VAL(<字符串表达式>) 将数字字符串转换为数字

TYPE(<表达式>) 检测表达式值的数据类型

LTRIM(<字符串表达式>) 删除字符串左部空格

RTRIM(<字符串表达式>) 删除字符串右部空格

LEFT(<字符串表达式>,<数值表达式n>) 取字符串左边部分字符,n为返回的字符个数

RIGHT(<字符串表达式>,<数值表达式n>) 取字符串右边部分字符,n从右边截取字符个数

3、表(dbf) *** 作函数

函数 用途

BOF([<工作区号或别名>]) 查表文件开始函数

EOF([<工作区号或别名>]) 表文件结尾测试函数

RECNO([<工作区号或别名>]) 测试当前或指定工作区表的当前记录号

DELETED([<工作区号或别名>]) 记录删除测试函数

FILE(<"字符串">) 测试文件是否存在函数

DBF([<工作区号或别名>]) 检测表的文件名函数

4、日期、时间函数

函数 用途

DATE() 查系统当前日期函数

TIME([<数值表达式>]) 查系统当前时间函数

YEAR(<日期型表达式>|<日期时间型表达式>) 由日期查年函数

MONTH(<日期型表达式>|<日期时间型表达式>) 从日期查月份函数

CMONTH(<日期型表达式>|<日期时间型表达式>) 由日期查月份名函数

DAY(<日期型表达式>|<日期时间型表达式>) 从日期查当月的日函数

DOW(<日期型表达式>|<日期时间型表达式>[,<数值表达式>]) 由日期查星期函数

CDOW(<日期型表达式>|<日期时间型表达式>) 从日期查星期名函数

DTOC(<日期型表达式>|<日期时间型表达式>) 日期转换为字符函数

CTOD(<字符串表达式>) 字符串转换为日期函数

CTOT(<字符串表达式>) 返回日期时间值函数

TTOC(<日期时间型表达式>) 返回字符值

5、显示、打印位置函数

函数 用途

ROW() 判断光标行位置函数

COL() 判断光标列位置函数

INKEY([<数值表达式>]) 检测用户所击键对应的ASCII码函数,数值表达式以秒为单位等

待击键的时间

6、其他函数

函数 用途

DISKSPACE() 返回默认磁盘驱动器中可用字节数函数

OS() 检测 *** 作系统名称的函数

VERSION() 返回VFP版本号的函数

三、主要程序语句

1、条件判断语句

格式:(1)IF <条件>

<命令语句组>

ENDIF

说明:如果条件为真,则执行命令语句组中的各语句,否则跳过这些命令语句不执行,

而执行ENDIF后的语句。

(2)IF <条件>

<命令语句组1>

ELSE

<命令语句组2>

ENDIF

说明:如果条件为真,执行命令语句组1,否则执行命令语句组2。

(3)IF <条件1>

IF <条件2>

<命令语句组1>

ELSE

<命令语句组2>

ENDIF

ELSE

<命令语句组N>

ENDIF

说明:进行多重条件的嵌套选择。

(4)DO CASE

CASE <条件1>

<命令语句组1>

CASE <条件2>

<命令语句组2>

CASE <条件3>

<命令语句组3>

CASE <条件N>

<命令语句组N>

[OTHERWISE]

[<命令语句组N+1>]

ENDCASE

说明:依次判断条件,转入条件为真的命令语句组中执行。当所有条件都不成立时,若有

OTHERWISE项,则执行命令语句组N+1,否则执行ENDCASE后面的语句。

2、循环语句

格式:(1)DO WHILE <条件>

<命令语句组>

[LOOP]

<命令语句组>

[EXIT]

<命令语句组>

ENDDO

说明:判断条件是否为真,如为真就重复执行循环体中的命令语句组,直到条件为假,结束

环。

(2)SCAN

<命令语句组>

ENDSCAN

说明:在一个表中建立一个执行命令语句组的循环,并执行对每一条记录的 *** 作,直到表文

记录完为止。

VFP常用函数使用说明

1、数值运算函数

函数 *** 作 例 结果

SQRT(x) 求平方根 SQRT(9) 3

INT(x) 取整数 INT(314) 3

ROUND(x) 四舍五入 ROUND(314159,4) 31416

MOD(x,y) 求X除以Y的余数 MOD(25,4) 1

MAX(x,y) 求X,Y中的最大值 MAX(7,8) 8

MIN(x,y) 求X,Y中的最小值 MIN(1,2,3) 1

2、字符中 *** 作函数

函数名 *** 作 例 结果

UPPER(S) 小写字母 UPPER(abc) ABC

LOWER(S) 大写字母 LOWER(ACD) acd

LEN(S) 求字符串的长度 LEN("中国1号") 7

AT(S1,S2) 在字符串S2,找字符串S1 AT("H","CHINA") 2

SUBSTR(S,I,N) 在S字符串中的第I个字符起取N个字符 SUBSTR('TECHNOLO',3,3) CHN

LEFT(S,N) 从字符串S左边取N个字符 LEFT("中国人",4) 中国

RIGHT(S,N) 从字符串S右边取N个字符 S=‘12345'

RIGHT(S,3) 345

SPACE(N) 生成N个空格 "合计"+SPACE(2)+"123" 合计123

TRIM(S) 消除字符串尾部空格 TRIM("姓名 ") 姓名

ALLTRI(S) 消除字符串中所有空格 ALLTRIM("李 丽") 李丽

STUFF(S1,N1,N2,S2) 用字符串S2替换S1中第N1个字符起的N2个字符 STUFF("NOW",2,

1,"E") NEW

& 宏替换 P="G2"

USE &P USE G2

3、日期和时间函数

函数名 *** 作 例 结果

DATE() 求当前日期 DATE() 2001/11/12

DATETIME() 求当前日期和时间 DATETIME() 2001/11/12/0:22:33am

YEAR(D) 求年份 YEAR(DATE()) 2001

MONTH(D) 求月份(数值) MONTH(DATETIME()) 11

CMONTH(D) 求月份(字符) MONTH(DATETIME()) Novenber

DAY(D) 求日期 DAY(DATE()) 12

DOW(D) 求星期几(数值) DOW(DATE()) 1

CDOW(D) 求星期几(英文) CDOW(DATE()) sunday

TIME(D) 求当前时间 TIME(DATE()) 10:20:38am

4、数据类型转换函数

函数名 *** 作 例 结果

ASC(S) 求第一个字符串的ASCII码 ASC("what") 87

CHR(N) 求ASCII码的字符 CHR(87) w

STR(R,L,D) 数值转换成字符,L为长度,D为小数位数 X=31415

STR(X,6,2) 314

VAL(S) 字符串转换为数值 VAL("123") 12300

CTOD(S) 字符串转日期 CTOD('11/01/2002') 11/01/2002

DTOC(D) 日期转换成字符串 DTOC(DATE()) 11/01/2002

DTOS(D) 把日期转成年月日式的字符串 DTOS(DATE()) 20021101

CTOT(C) 字符串转成日期时间型 CTOT(11/01/2002 10:30:50am) 11/01/2002 10:30:50am

DTOT(D) 日期型转为日期时间型 DTOT(DATE()) 11/25/2001 00:00:01am

TTOC(T) 日期时间型转为字符型 TTOC(DATETIME()) 11/25/2001 00:00:01am

TTOD(T) 日期时间型转为日期型 TTOD(DATETIME()) 11/25/2001

IIF(LE,E1,E2) 逻辑判断 IIF(A>0,"YES","NO") YES

5、检测函数

函数名 *** 作 例 结果

RECNO() 检测当前记录号 RECNO() 1

RECCOUNT() 检测当前记录数 RECCOUNT() 12

BOF() 开始记录 BOF() 1

EOF() 最后记录 EOF() 12

FOUND() 返回查找结果 FOUND() T

ROW() 返回当前行坐标 ROW() 1

COL() 返回当前列坐

right 函数的功能是右取字符 ,left 函数是左取字符 ,substr函数是指定位置,取指定的长度。

三个函数并称为取子串函数。

b是微型,a的右边就是 机 字,所以是 微型机

2代表的是宽度,一个汉字的宽度就是2,一个英文字符的宽度是 1

而另一个

b 是 微型 a 的左边就不是 机 字了,而是 计 字,所以不对。而且这种作法不提倡,因为 3 这个宽度,取不到2个字出来。一般取的长度都是偶数。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/13492981.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存