如何在SAS中提取字符串的最后4个字符

时间:2015-01-09 11:07:27

标签: sas

改进格式化,我有点卡在我无法提取字符串的最后4个字符的地方。当我写道: -

indikan=substr(Indikation,length(Indikation)-3,4);

它给出了无效的论据 怎么做?

6 个答案:

答案 0 :(得分:5)

此代码有效:

data temp;
indikation = "Idontknow";
run;

data temp;
set temp;
indikan = substrn(indikation,max(1,length(indikation)-3),4);
run;

您能为变量提供更多上下文吗?如果indikation的长度为3或小于我可以看到此错误,或者如果它是数字,则可能会导致问题,因为它正确对齐数字http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000245907.htm)。

答案 1 :(得分:2)

如果在某些情况下可能不到四个字符,我建议添加max

indikan = substrn(indikation,max(1,length(indikation)-3),4);

我还添加了substrn,因为Rob建议它更好地处理一个不够长的字符串。

答案 2 :(得分:1)

或者可以使用反向功能两次,如下所示:

data _null_;

   my_string = "Fri Apr 22 13:52:55 +0000 2016";

   _day   = substr(my_string, 9, 2);
   _month = lowcase(substr(my_string, 5, 3));

   * Check the _year out;
   _year  = reverse(substr(reverse(trim(my_string)), 1, 4));

   created_at = input(compress(_day || _month || _year), date9.);

   put my_string=;
   put created_at=weekdatx29.;
run;

答案 3 :(得分:0)

尾随空白可能导致错误的结果: 所以,在你执行substr之前,去掉/修剪你的字符串:

indikan=substr(strip(Indikation),length(strip(Indikation))-3);

必须给你最后4个字符

答案 4 :(得分:0)

或者您可以尝试这种方法,虽然最初不太直观,但是稳定,更短,使用更少的功能,并使用数字和文本值:

indikan = prxchange("s/.*(.{4}$)/$1/",1,indikation);

答案 5 :(得分:-1)

 <table class = "table table-hover" *ngIf="videos">   //<<<===here
    <thead>
        <th>ID</th>
        <th>Title</th>
        <th>Descreption</th>
    </thead>
    <tbody>
        <tr *ngFor = "let v of videos">
         <td>{{v.id}}</td>
         <td>{{v.title}}</td>
         <td>{{v.desc}}</td>
        </tr>
    </tbody>

</table>

输出:

https://i.stack.imgur.com/WVB0A.jpg