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

SAS如何删除字符串中左括号及之后内容,仅保留人名部分

SAS实现删除Name字段左括号及后续内容的方法

你之前使用compress()函数达不到需求的原因是:compress()仅能删除字符串内指定的单个字符,无法批量删除左括号之后的所有内容。正确实现逻辑是先定位左括号的首次出现位置,再截取该位置之前的字符串即可。

修改后的完整代码如下:

data output; 
    length Name $30. new_name $30.;
    infile datalines dlm=','; 
    input Name$ Age;
    /* 定位第一个左括号的位置 */
    bracket_pos = find(Name, '(');
    if bracket_pos > 0 then do;
        /* 截取括号前的内容并去掉首尾空格 */
        new_name = strip(substr(Name, 1, bracket_pos - 1));
    end;
    else do;
        /* 没有括号的名字直接保留 */
        new_name = strip(Name);
    end;
    /* 不需要输出中间变量可drop */
    drop bracket_pos;
    datalines; 
James,12
John (funny),11
Jonathan,10
Alisa (134 cm),12
Merlin (cheerful),12
Jessica (hopeful),12
Ali (quiet),13
;
run;

处理后得到的new_name字段结果符合需求:

new_name    Age
James       12
John        11
Jonathan    10
Alisa       12
Merlin      12
Jessica     12
Ali         13

如果需要直接覆盖原Name字段,把代码中的new_name替换为Name即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:57:04