1

ABAP 辨析CO|CN|CA|NA|CS|NS|CP|NP - 斌将军

 1 year ago
source link: https://www.cnblogs.com/BinGeneral/p/17154705.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

1、文档说明

本篇文档将通过举例,解析字符的比较运算符之间的用法和区别,涉及到的操作符:CO|CN|CA|NA|CS|NS|CP|NP

2、用法和区别

用法总览

1225252-20230225184023336-1314333669.png

以下举例,几乎都使用一个字符变量和一个硬编码字符进行对比的方式,忽略尾部空格,所以需要注意

1225252-20230225184455460-123915381.png

凡是比较尾部空格的,需要特别注意变量的长度和字符的长度,考虑尾部空格对结果的影响

2.1、CO仅包含

S1 仅含有 S2中的字符(区分大小写,比较尾部空格)

2.1.1、S1仅有a等于S2中的a,其实还有个尾部空格

1225252-20230225183146389-1722462327.png

去掉尾部空格(尾部空格参与比较的运算符同理)

1225252-20230225183217728-1072501200.png

实际的内容是这样,S1除了a,还包含4个尾部空格,而S2中没有尾部空格,因此结果为FALSE

1225252-20230225153419305-835434394.png

2.1.2、S1含有S2中没有的c

1225252-20230225183241185-1130266857.png

2.2、CN包含以外

S1包含S2中以外的字符(区分大小写,比较尾部空格)

2.2.1、S1包含S2中没有的c

1225252-20230225183256682-276599252.png

2.2.2、S1仅有a等于S2中的a,没有其他S2以外的字符

1225252-20230225183323752-371109676.png

2.3、CA包含任意

S1至少包含S2中的任意一个字符(区分大小写,比较尾部空格)

2.3.1、S1包含S2中的a,其实还有个尾部空格

1225252-20230225183037471-2031766586.png

如果变量直接比较,包含尾部空格,其实是用空格进行了对比,所以任何情况结果都是TRUE

1225252-20230225183014139-1496411713.png

2.3.2、S1没有包含S2中的任何字符

1225252-20230225182937843-1061270553.png

2.4、NA不包含任意

S1不包含S2的任意一个字符(区分大小写,比较尾部空格)

1225252-20230225183406173-1676343752.png

2.5、CS包含字符串

S1包含S2整个字符串

1225252-20230225183436262-594697121.png

2.6、NS不包含字符串

S1不包含S2整个字符串

1225252-20230225185024917-710033085.png

2.7、CP符合模式

S1符合S2的模式

此处使用"*"和"+"作为通配符

"*"匹配"字符串"

"+"匹配"字符"

1225252-20230225183538571-421786262.png

如果需要区分大小写,需要匹配*和+字符,需要匹配空格,则需要通过#号进行转义

大小写要求:#B #c

1225252-20230225183609006-1976779142.png

 匹配*或+

1225252-20230225183641362-415931934.png

1225252-20230225183709570-832196356.png

2.8、NP不符合模式

S1不符合S2的模式

1225252-20230225183733616-1409812959.png

3、特殊情况

除了以上要注意区分大小写和字符尾部空格外,还需要注意变量类型

例如:CO中,如果S2 type string类型,且为初始值,S1无论何值,结果都是FALSE

1225252-20230225183816576-560719442.png

如果 S1 type string类型,且为初始值,S2无论何值,结果都是TRUE

1225252-20230225183855139-902827553.png

 再例如:CA中,S1或S2为string类型,且为初始值,则结果都是FALSE


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK