美文网首页
SAS编程:英文字符如何首个单词首字母大写?

SAS编程:英文字符如何首个单词首字母大写?

作者: 野藤_ | 来源:发表于2022-02-18 20:34 被阅读0次

    工作中出一张表,AE发生部位的频数汇总。ADAE中AELOC的值是大写,由于shell中没有指明显示的大小写,在统计师确认前,我先首字母展现出来,使用函数propcase:

    data test;
      set adam.adae;
      t1 = propcase(aeloc);
    run;
    

    后来,统计师要求只需要首个单词首字母大写。对于这个要求,我心里一下子觉得变扭。为什么呢?因为前面一个propcase函数实现,代码简洁;而对于统计师的要求,我脑袋里第一个想法是,提取字符的第一个单词后,使用propcase函数处理,对于剩下的再使用lowcase函数处理后,与前半部分拼接。仔细一想,繁琐了“一点点”

    第一个想法,能实现要求,但是我内心不太愿意去实现。于是,寻求其他方法来实现。

    首当其冲,就是想SAS中是否有实现首个单词首个字母大写的函数,直接的行动就是翻SAS函数字典(SAS Help Center: Dictionary of Functions and CALL Routines)。

    Dictionary of Functions and CALL Routines

    但是,这么埋头一个一个看下去,效率太低。又想到,在介绍一个函数的末尾,官方文档中会附加相类似功能的函数的链接。那propcase函数的介绍结尾,会不会有我想要的函数链接呢?

    我去看了下,很可惜,只有全部大写或小写的函数。这也说明,SAS中可能没有直接实现字符首个单词首字母大写的函数。

    Propcase

    在失望之余,我看起了propcase函数的介绍,看到这个函数还有另一个参数delimiter

    事情出现了转机,这个参数的功能是:

    指定一个或多个用引号括起来的分隔符。
    默认的分隔符是空白、正斜杠、连字符、开括号、句点和制表符。
    Tip: 如果使用此参数,则默认分隔符(包括空格)将不再有效。

    Propcase

    我苦恼的问题是,propcase函数会把每一个单词都首字母大写;而区分“每个单词”的是它们之间的空格——默认的分隔符,如果我指定分隔符不是空格,那我处理的字符不就成了“一个单词”,那这个“单词”首字母大写就实现了我想要的功能

    最后,方法很简单,我随便指定一个分隔符,不那么繁琐地实现首个单词首字母大写的功能。

    data test;
      set adam.adae;
      t1 = propcase(aeloc, "\");
    run;
    

    结语

    文章分享了,我实现英文字符首个单词首字母大写的过程。首先想到的方法,思路简单,但实现起来“繁琐”;在寻找简洁方法的过程中,发现了propcase函数的delimiter参数可以解决我的问题。

    实际工作中,并非每次尝试都能成功找到简洁的方法,最根本的目的还是将问题解决。毕竟,不管黑猫白猫,能抓到老鼠的就是好猫。如果短时间内找不到一个简洁的方法,笨方法不失为一个好方法

    不过,多记录、多积累,会加大找到简洁方法的概率

    感谢阅读!若有疑问,欢迎评论区交流!

    相关文章

      网友评论

          本文标题:SAS编程:英文字符如何首个单词首字母大写?

          本文链接:https://www.haomeiwen.com/subject/jspylrtx.html