关于VFP的字符串比较运算(一)
对字符串来说,其比较规则如下:比较两个字符串时,系统对两个字符串的
字符自左向右逐个进行比较,一旦发现两个对应字符不同,就根据它们的排序序
列决定字符串的大小。对字符序列的排序设置选项有三种:Machine(机器)、
Pinyin(拼音)、Stroke(笔画)。
a)Machine(机内码)次序:字符按ASCII码值比较(小写字母>大写字母>空格),
汉字按拼音顺序比较。
例:“abc”>“abcd”、“b”>“B”、“c”<“ c”、“张”>“李”
b)Pinyin(拼音)次序:汉字按拼音顺序比较,字符按大写字符>小写字符>空格
进行比较。
例:“a”< “A”
两个字符串比较时,若长度相等,比较时规则相对容易,不论是进行=(单等
号)还是==(双等号)运算,即比较时从左到右逐个字符进行,如对应的字符有不
相等的,则其比较结果为不相等(.F.),如一直到结尾对应的字符都相等则其比
较结果为相等(.T.)。
如果两个字符串的长度不同,则SETEXACT ON 和SETEXACT OFF这两
条命令将会直接影响表1中列出的=(等于)和!=(不等于)的运算规则。字
符串比较过程中经常产生的疑义将由此而来。
例2:在命令窗口输入如下语句。
SETEXACT OFF &&字符串进行非精确比较
?"王老师">"王", "王老师"<"王" 2.1 长度不相等的字符串比较
&&运算结果为.F. .F.
2.1.1 执行SET EXACT OFF 命令时的比较
当EXACT的设置值为OFF(默认值)时,只要运算符右边字符串的所有字
符和运算符左边字符串的左端部分内容相匹配,则认为两个字符串相等。
2.1.2执行SETEXACT ON 命令时的比较
当EXACT的设置值为ON时,在较短的一个字符串的右边加上足够的空格,
以两个字符串的长度相等,并且每个相应的字符都相等,则认为两个字符串相等。
以上给出了在不同系统环境下的比较两个字符串是否相等的规则。如果两个
字符串不相等,则两个字符串一定具有大于或小于的关系。如何确定两个字符串
的大于或小于关系?用运算符<(小于)或>(大于)进行两字符串比较时,
比较到第1个不相同字符为止,否则,长度较长的字符串较"大"。
可见,在以上的两个不同系统环境下,长度不相等的两个字符串的比较规则
不同。
关于VFP的字符串比较运算(二)
运算结果为.T.,而>(大于)
若两个字符串相等,则它们的=(等于)
、<(小于)、!=(不等于)运算结果为.F.。、>=(大于等于)、<=(小于等于)
(不等于)
>=(大于等于)运算结果为.F.。若两个字符串不相等,且运算符左边的字符大
于运算符右边的字符串,则!=(不等于)、>(大于)、>=(大于等于)<运算结
果为.T.,而=(等于)、<(小于)、<=(小于等于)运算结果为.F.
例3:在命令窗口输入如下语句:
SETEXACT OFF &&字符串进行非精确比较
?"王老师"="王","王老师">="王","王老师"<="王" &&运算结果
为.T..T. .T.
?"王老师">"王","王老师"<"王","王老师"!="王" &&运算结果
为.F..F. .F.
这是两个字符串进行非精确比较。"王老师"和"王"比较时,运算符右边的字
符串"王"与运算符左边的字符串"王老师"前面的第1、2字符相等,则"王老师"和
"王"相等。以上各运算的显示结果也不难理解。
在命令窗口输入如下语句:
SETEXACT ON &&字符串进行精确比较
?"王老师"="王","王老师"<"王","王老师"<="王" &&运算结果为.F..F. .F. ?"王老师">"王","王老师">="王","王老师"!="王" &&运算结果为.T..T. .T.这是两个字符串进行精确比较。这样两个字符串有特点:两个字符串长度不
相等,右边的字符串与左边的字符串前面部分内容相同。
"王老师"和"王"比较时,在"王"的尾部加上4个空格,使要比较的两个字符串长度相等。再比较"王老师"和"王",显然两个字符串不相等,且"王老师">"王"。以上的各运算的结果不难理解。
Copyright © 2019- tjwe.cn 版权所有
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务