我正在寻找一种使用此分隔符拆分非常长的字符串的方法:'| '
扫描功能似乎不接受单词分隔符,所以如果我这样做
scan(string,3,'| ')
它会在每|
和空格分开
而不是像我需要的那样'| '
。
在文档中,我没有看到任何修改器允许这样做。 http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000214639.htm
答案 0 :(得分:1)
INFILE具有DLMSTR与infile magic结合使用时可以完全满足您的需要。你的transwrd想法应该运作良好。
data test;
input string $50.;
cards4;
This|is | pipe space| delmimited
This| is| too I believe
;;;;
run;
data test2;
infile cards missover dlmstr='| ';
if _n_ eq 1 then input @;
array w[5] $64;
do while(not eof);
set test end=eof;
_infile_ = string;
input @1 w[*] @;
output;
end;
stop;
cards;
Necessary evil
run;
答案 1 :(得分:0)
我自己发现了
使用tranwrd
将'| '
替换为'_'
newstring=tranwrd(string,'| ','_');
然后我可以正常使用扫描功能
xxx=scan(newstringstring,3,'_');