关于VFP的字符串比较运算

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关于VFP的字符串比较运算(一)对字符串来说,其比较规则如下:比较两个字符串时,系统对两个字符串的字符自左向右逐个进行比较,一旦发现两个对应字符不同,就根据它们的排序序列决定字符串的大小。对字符序列的排序设置选项有三种:Machine(机器)、Pinyin(拼音)、Stroke(笔画)。

a)Machine(机内码)次序:字符按ASCII码值比较(小写字母>大写字母>空格),汉字按拼音顺序比较。

例:“abc”> “abcd”、“b”> “B”、“c”< “c”、“张”> “李”

b)Pinyin(拼音)次序:汉字按拼音顺序比较,字符按大写字符>小写字符>空格进行比较。

例:“a”< “A”

c)Stroke(笔画)次序:按笔画的多少排序。

例:“李”<“王”、“a”<“t”

两个字符串比较时,若长度相等,比较时规则相对容易,不论是进行=(单等号)还是= =(双等号)运算,即比较时从左到右逐个字符进行,如对应的字符有不相等的,则其比较结果为不相等(.F.),如一直到结尾对应的字符都相等则其比较结果为相等(.T.)。

如果两个字符串的长度不同,则SET EXACT ON 和SET EXACT OFF这两条命令将会直接影响表1中列出的=(等于)和!=(不等于)的运算规则。字符串比较过程中经常产生的疑义将由此而来。

例2:在命令窗口输入如下语句。

SET EXACT OFF &&字符串进行非精确比较

?"王老师">"王", "王老师"<"王" &&运算结果为.F. .F.

2.1长度不相等的字符串比较

2.1.1执行SET EXACT OFF 命令时的比较

当EXACT的设置值为OFF(默认值)时,只要运算符右边字符串的所有字符和运算符左边字符串的左端部分内容相匹配,则认为两个字符串相等。

2.1.2执行SET EXACT ON 命令时的比较

当EXACT的设置值为ON时,在较短的一个字符串的右边加上足够的空格,以两个字符串的长度相等,并且每个相应的字符都相等,则认为两个字符串相等。

以上给出了在不同系统环境下的比较两个字符串是否相等的规则。如果两个字符串不相等,则两个字符串一定具有大于或小于的关系。如何确定两个字符串的大于或小于关系?用运算符<(小于)或>(大于)进行两字符串比较时,比较到第1个不相同字符为止,否则,长度较长的字符串较" 大"。

可见,在以上的两个不同系统环境下,长度不相等的两个字符串的比较规则不同。

关于VFP的字符串比较运算(二)若两个字符串相等,则它们的=(等于)、>=(大于等于)、<=(小于等于)运算结果为.T.,而>(大于)、<(小于)、!=(不等于)运算结果为.F.。

若两个字符串不相等,运算符左边的字符串小于运算符右边的字符串,则!=(不等于)、<(小于)、<=(小于等于)运算结果为.T.;而=(等于)、>(大于)、>=(大于等于)运算结果为.F.。若两个字符串不相等,且运算符左边的字符大于运算符右边的字符串,则!=(不等于)、>(大于)、>=(大于等于)<运算结果为.T.,而=(等于)、<(小于)、<=(小于等于)运算结果为.F.

例3:在命令窗口输入如下语句:

SET EXACT OFF &&字符串进行非精确比较

?"王老师"="王", "王老师">="王", "王老师"<="王" &&运算结果为.T. .T. .T.

?"王老师">"王", "王老师"<"王", "王老师"!="王" &&运算结果为.F. .F. .F.

这是两个字符串进行非精确比较。"王老师"和"王"比较时,运算符右边的字符串"王"与运算符左边的字符串"王老师"前面的第1、2字符相等,则"王老师"和"王"相等。以上各运算的显示结果也不难理解。

在命令窗口输入如下语句:

SET EXACT ON &&字符串进行精确比较

?"王老师"="王", "王老师"<"王", "王老师"<="王" &&运算结果为.F. .F. .F.

?"王老师">"王", "王老师">="王", "王老师"!="王" &&运算结果为.T. .T. .T.

这是两个字符串进行精确比较。这样两个字符串有特点:两个字符串长度不相等,右边的字符串与左边的字符串前面部分内容相同。

"王老师"和"王"比较时,在"王"的尾部加上4个空格,使要比较的两个字符串长度相等。再比较"王老师"和"王",显然两个字符串不相等,且"王老师">"王"。以上的各运算的结果不难理解。

相关文档
最新文档