有一个字符串'6017> 6025> 6023> 6022> 6025> 6032'。我们怎么知道'6025'的最后位置? index函数只返回第一次出现的字符串。很难使用反向功能,因为它找不到一个字符。有什么好主意吗?
答案 0 :(得分:10)
您可以使用FIND功能来解决问题。查看SAS documentation上的查找功能。对于您的问题,find函数的以下语法可以提供帮助。
FIND(input string,search string,start position)
因此,要以反方向查找文本,可以使用START POSITION的负值,该值将大于字符串的长度。因此,如果长度为8,则开始位置为-8或-9或-10等,以反向搜索
查看以下示例代码。
data _null_;
x='6017>6025>6023>6022>6025>6032';
y=find(x,'6025',-length(x));
putlog _all_;
run;
答案 1 :(得分:1)
您可能希望使用FINDW()而不是INDEX()或FIND()来避免仅匹配字符串中某个单词的一部分值。 FINDW()函数使您可以使用修饰符来执行诸如从头到尾搜索并去除前导/尾随空格的操作。
data test;
length string $100 word $30 ;
string = '6017>6025>6023>6022>6025>6032';
do word='6025','6032','6017','602';
location = findw(string,word,'>','bt');
put word= location=;
end;
run;
结果:
word=6025 location=21
word=6032 location=26
word=6017 location=1
word=602 location=0
答案 2 :(得分:0)
您可以使用FIND功能,例如写波纹管,其中20是搜索的起始位置
data _null_;
x='6017>6025>6023>6022>6025>6032';
y=find(x,'6025',20);
putlog _all_;
run;