SAS Function之FIND, FINDC, FINDW
Find Function 与 INDEX Function
参考自[Ron_Cody] SAS Functions by Example, Second Editio
FIND Function 与 INDEX Function 类似
如下表:
FIND | String |
---|---|
INDEX | |
FINDC | Individual Characters |
INDEXC | |
FINDW | Words |
INDEXW |
如上表所示:
- FIND和INDEX用于检索字符串中的“子字符串”;
- FINDC和INDEXC用于检索“独立的字符”;
- FINDW和INDEXW用于检索“单词”(单词是指分隔符做边界的字符串)。
PS关于”单词“,举个栗子!
“This is a string that consists by words.”
在上述句子中,每一个由分隔符”空格”所“夹”的“字符串就是”单词“。这里的分割符不仅可以是空格,也可以是其它自定义的符号。在SAS中被定义为符号的符号包括:” ! ” # $ % & ’ ( ) * + , – .< = > ? @ [ \ ] ^ _ ` { | } ~/;:“
然而两类Function之间不同的是:FIND 类Function有一些INDEX类Function所不具有的功能,包括:
- FIND类可以检索所检索目标的”首次“出现位置;
- FIND类可以指定检索的方向(如:自左向右,自右向左);
- FIND类可以忽略字符串的大小写或末尾的空格。
FIND
Function | FIND |
---|---|
目的 | 检索”字符串“中的”子字符串“。可附加选项:指定检索开始位置;检索方向;忽略大小写或末尾空格。 |
语法 | FIND(character-value, find-string <,‘modifiers’> <,start>) |
语法翻译 | FIND(在里面搜索的变量或字符串, 想要搜索的变量或字符串 <,‘附加选项’> <,开始位置>) |
character-value 任意SAS字符变量。 | |
find-string 包含一个或多个字符的任意字符变量或字符串 | |
modifiers: i 忽略大小写; t忽略末尾空格 | |
start: 检索开始的位置。省略:从字符串开始进行检索;非零:从最左边第几个字符开始检索;正值:从左往右检索;负值:从右往左检索;负值且其绝对值长于子字符串长度:从右往左检索;正值且其值长于子字符串长度:从左往检索; |
实例: STRING1 = “Hello hello goodbye” and STRING2 =“hello”
Function | Returns | 解读 |
---|---|---|
FIND(STRING1, STRING2) | 7 (position of “h” in hello) | 从左往右检索“hello”中的h在第7个字符,此时按大小写匹配检索 |
FIND(STRING1, STRING2, ‘i’) | 1 (position of “H” in Hello) | 从左往右检索“hello”中的h在第1个字符,此时忽略大小写匹配检索 |
FIND(STRING1,“bye”) | 17 (position of “b” in goodbye) | 从左往右检索“bye”中的b在第17个字符,此时按大小写匹配检索 |
FIND(“abcxyzabc”,“abc”,4) | 7 (position of second “a”) | 从左往右检索从第4个字符起,忽略前面的“abc”三个字符,继续往后检索时“abc”中的a在第7个字符,此时按大小写匹配检索 |
FIND(STRING1, STRING2, ‘i’, -99) | 7 (position of “h” in hello) | 因为start定义为“-99”远高于string的长度,所以从右往左检索 |
FINDC
FINDW
哇,Markdown编辑器有点别扭,明天再续…