我正在通读《SAS 函数示例 - 第二版》一书,并且由于他们获得的示例和输出而无法理解某个函数。
功能:FINDC
目的: 定位字符串中出现或未出现的字符。使用可选参数,您可以定义搜索的起点、设置搜索的方向、忽略大小写或尾随空格,或者查找列出的字符以外的字符。
句法:FINDC(character-value, find-characters <,'modifiers'> <,start>)
其中两个修饰符是i
和k
:
i
忽略大小写
k
只计算不在查找字符列表中的字符
所以现在其中一个例子是这样的:
注意:STRING1
=“苹果和书籍”
FINDC(STRING1,"aple",'ki')
对于输出,他们说它返回1
是因为“A”在 Apple 中的位置。然而,这让我感到困惑,因为我认为k
修饰符说要查找不在查找字符列表中的字符。那么它为什么要搜索忽略大小写的a
字母“A”在查找字符列表中。对我来说,我觉得这个例子应该输出苹果中的“s”。6
有没有人能k
更好地向我解释修饰符,为什么这个答案的输出是1
而不是6
?
编辑 1
在线阅读 SAS文档,我发现这个例子似乎与我正在阅读的书相矛盾:
示例 3:搜索字符并使用 K 修饰符
此示例搜索字符串并返回未出现在字符列表中的字符。
data _null_;
string = 'Hi, ho!';
charlist = 'hi';
j = 0;
do until (j = 0);
j = findc(string, charlist, "k", j+1);
if j = 0 then put +3 "That's all";
else do;
c = substr(string, j, 1);
put +3 j= c=;
end;
end;
run;
SAS writes the following output to the log:
j=1 c=H
j=3 c=,
j=4 c=
j=6 c=o
j=7 c=!
That's all
那么,这本书有错吗?