You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SAS中删除指定字符串‘MD’之后的所有字符

SAS解决方案:删除字符串中'MD'之后的所有字符

针对你的需求,我整理了两种实用的SAS解决方案,都能精准删除Names变量中MD之后的所有字符,完全匹配你的预期输出:

方法一:基于位置定位的截取法

这种方法通过定位MD的位置,直接截取目标字符串,逻辑直观易懂:

DATA EXAMPLE2;
    SET EXAMPLE1;
    /* 定位'MD'的起始位置,'i'参数支持忽略大小写(可按需移除) */
    md_pos = FIND(Names, 'MD', 'i');
    IF md_pos > 0 THEN DO;
        /* 截取从字符串开头到'MD'结束的部分(MD长度为2,所以+1) */
        Want_names = SUBSTR(Names, 1, md_pos + 1);
    END;
    ELSE DO;
        /* 如果未找到'MD',保留原字符串 */
        Want_names = Names;
    END;
    DROP md_pos; /* 移除临时变量 */
RUN;

关键说明:

  • FIND函数:精准定位MD在字符串中的起始位置,'i'参数确保即使是小写md或混合大小写Md也能被识别,若你的数据只有大写MD,可去掉该参数。
  • SUBSTR函数:根据定位到的位置,截取从开头到MD末尾的所有内容。

方法二:正则表达式替换法

如果你的字符串结构更复杂,正则表达式会更灵活,一行代码就能完成需求:

DATA EXAMPLE2;
    SET EXAMPLE1;
    /* 正则替换:匹配'MD'及之后的所有内容,替换为'MD'本身 */
    Want_names = PRXCHANGE('s/(MD).*/$1/', 1, Names);
RUN;

正则逻辑解释:

  • s/(MD).*/$1/:正则替换规则,(MD)是捕获组,匹配MD;.*匹配MD之后的任意字符;$1表示将匹配到的内容替换为捕获组里的MD。
  • 第二个参数1:表示只替换第一次出现的MD(若字符串中有多个MD,只会保留第一个MD及之前的内容)。

验证结果

运行上述任意代码后,你会得到预期的输出:

NamesWant_names
AARON RAY, MD INCAARON RAY, MD
AARON,RAY MD (1371927)AARON,RAY MD
RAY,AARON,MDRAY,AARON,MD

内容的提问来源于stack exchange,提问作者PriyamK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 09:32:38