—天凉好个秋,风清不知愁,欲语还休。
01
后台收到位读者的私信:
可以考虑一下中文文本中存在空格的情况,如果分割部分存在空格,length是会直接忽略掉空格的长度的
本来是想用lengthc,发现有点问题,然后刀刀对程序进行了测试,发现ktruncate有类似trim的功能,尾部空格直接就没有了,然后程序会将空格放在在下一个变量的开头部分,目前ktruncate实现分割200字符大概就是这样的效果,如果其他读者有更好的建议欢迎私信,下面内容是对上次的程序进行了精简,以及测试过程,欢迎大家阅读和测试程序。
代码语言:javascript复制data test_data;
dvterm_="將字串截斷為指定的長度 (位元組單位),而不會中斷多位元組字元。KTRUNCATE 函數會將完整長度的
number(儲存為 double) 將字串截斷為指定的長 度 (位元 組 單位),而不會中斷多位元組字元。KTRUNCATE 函數會將完整長度的
number (儲存為 double)截斷為較小的位元組數 (如 length 中所指定),並將截斷的位元組補上 0。截斷和後續擴充都會複製
儲存小於完整長度的數目後加以讀取的效果。";output;
dvterm_="A Recursive SAS macro is a special type of nested SAS macro. It is a very powerful programming technique to
resolve recursion problems. For example, the Fibonacci numbers are most commonly defined recursively. Our first
reaction to the problem is that it will require a complex iterative algorithm to solve. After we found that SAS macro
supports the recursive algorithm, we wrote a few lines of code (please see Appendix) to solve the problem.";output;
run;
代码语言:javascript复制data test_data;
set test_data;
no=n;
run;
代码语言:javascript复制data ghdd;
length QVAL_GHDD $200. QNAM_GHDD $8.;
set test_data;
by no;
if first.no then nn=1;
do while(dvterm_~="");
QVAL_GHDD=ktruncate(dvterm_,1,200);
dvterm_=substr(dvterm_,length(QVAL_GHDD) 1);
len=length(QVAL_GHDD);
QNAM_GHDD=ifc(nn-1=0,"DVTERM",cats("DVTERM",put(nn-1,best.)));
nn=nn 1;
output;
end;
run;
proc transpose data=ghdd out=ghdd_t;
by no;
id QNAM_GHDD;
var QVAL_GHDD;
run;
尊敬的读者,首先感谢您对本篇文章的关注和阅读。在此,本小编想要说明的是,以上所述内容都是经过笔者认真整理和撰写的,但限于个人能力和知识水平等因素,难免存在疏漏或错误之处。如有不当之处,敬请包涵并指正,本小编将虚心接受您的批评与建议,并严谨修正文章。再次感谢您对本篇文章的支持与厚爱。
以上就是今天的内容了,喜欢的话麻烦点个关注,非常感谢!!!