zoukankan      html  css  js  c++  java
  • sas:字符中数字的个数

    LIBNAME S '.';
    OPTIONS PS=MAX LS=MAX NOCENTER SASMSTORE=S MSTORED MAUTOSOURCE;
    %MACRO M_NUM_2_9(IN_TABLE,OUT_TABLE,V_NAME,START0,STOP0)/STORE;

    DATA &OUT_TABLE(KEEP=&V_NAME &V_NAME._&START0._&STOP0. NUM_2_9);
    SET &IN_TABLE;
    PRX=PRXPARSE("/2|3|4|5|6|7|8|9/");/*2-9中任意一个数字,区别与/[2-9]/*/
    LEN=&STOP0.-&START0.+1;
    TEXT=SUBSTR(COMPRESS(&V_NAME),&START0.,LEN);
    NUM=0;
    START=1;
    STOP=LENGTH(TEXT);
    CALL PRXNEXT(PRX,START,STOP,TEXT,POSITION,LENGTH);
    DO WHILE(POSITION>0);
    NUM+1;
    CALL PRXNEXT(PRX,START,STOP,TEXT,POSITION,LENGTH);
    END;
    RENAME TEXT=&V_NAME._&START0._&STOP0. NUM=NUM_2_9;
    RUN;
    %MEND;

    1:程序开头包含一个宏程序的加密,执行该部分只需要将生成的sasmacr给他人,别人就可以直接掉包,而看不到源程序

    2.正则表达式中prxparse('/[2-9]/') 与 prxparse('/2|3|4|5|6|7|8|9/')区别是,前者识别的2-9的任意一个出现,CALL PRXNEXT()的length是连续出现2-9数字的个数,而后者对应的length是1;

    调用案例:

    /*案例数据集*/
    LIBNAME S '.';
    DATA S.TEMP;
    INPUT X $40.;
    CARDS;
    89sksa9axx8zCz0z
    Wkc928AES19b1k3nSA3k
    jia0ds1FEWjsdc00-
    89WsksaF9axx8zz0z
    kc92FW819b1k3n3k
    jia0WEFds1jsdc00-
    ;
    RUN;

    /*调用宏*/
    /*LIBNAME S '.'; 定义指向存放宏M_NUM_2_9的sasmacr文件的逻辑库*/
    OPTIONS PS=MAX LS=MAX NOCENTER SASMSTORE=S MSTORED MAUTOSOURCE;/*SASMSTORE=S指向存储宏的逻辑库*/

    %M_NUM_2_9(S.TEMP,S.RESULT_1_12,X,1,12);
    /*参数1:输入数据集
    参数1:输出数据集
    参数3:处理的变量(一个)
    参数4:截取变量的起始位置;
    参数5:截取变量的结束位置;
    */

  • 相关阅读:
    精益产品探索
    vue 之 pdf预览
    arcgis js 之 渔网工具(调用地图服务)
    arcgis js之卷帘工具
    arcgis js之调用wms服务
    vue-cli3 本地数据模拟后台接口
    cmd设置电脑自动关机
    Arcgis js之web墨卡托(3857)转经纬度坐标(4326)
    arcgis js之地图分屏同步
    arcgis之gp服务发布
  • 原文地址:https://www.cnblogs.com/Anni-love-Ferris-wheel/p/6889686.html
Copyright © 2011-2022 走看看