String 替换字符串中的特定字符(它们的列表),而不删除空格
我试图在SAS中使用手动插入的字符串,我需要删除特定的特殊字符(可能是通过插入一系列字符),而不需要删除单词之间的空格 我已经找到了一个可能的解决方案,将String 替换字符串中的特定字符(它们的列表),而不删除空格,string,sas,String,Sas,我试图在SAS中使用手动插入的字符串,我需要删除特定的特殊字符(可能是通过插入一系列字符),而不需要删除单词之间的空格 我已经找到了一个可能的解决方案,将compbl和transtrn组合起来,删除特殊字符并用空格替换,通过compbl减少为一个,但这需要多个步骤 我想知道是否有一个函数可以让我一步完成这项工作。我试过使用compress函数(使用“k”修饰符只保留字母和数字),但它删除了单词之间的空格 我想从这样的字符串开始: O'()n?e/,^p.iece 致: 一件式 两个词之间只有一个
compbl
和transtrn
组合起来,删除特殊字符并用空格替换,通过compbl
减少为一个,但这需要多个步骤
我想知道是否有一个函数可以让我一步完成这项工作。我试过使用compress函数(使用“k”修饰符只保留字母和数字),但它删除了单词之间的空格
我想从这样的字符串开始:
O'()n?e/,^p.iece
致:
一件式
两个词之间只有一个空格
如果有人能帮我,那就太棒了 您可以使用regex和
prxchage
data have;
value="O'()n?e /, ^P.iece";
run;
data want;
set have;
value_want=value_want=prxchange("s/\s\s+/ /",-1,prxchange("s/[^a-zA-Z0-9\s]*//",-1,value));
run;
结果:
+--------------------+------------+
| value | value_want |
+--------------------+------------+
| O'()n?e /, ^P.iece | One Piece |
+--------------------+------------+
使用
压缩
功能的下一个标记:
k--keep字符代替它
a--alphabetic chars
s--s配速字符
d--digits
然后,使用函数COMPBL
代码:
因此:
令人惊叹的!它工作完美;非常感谢你的帮助,我不知道我可以把更多的修饰符放在一起。非常感谢你的帮助,我以前从未使用过正则表达式,但你的解决方案让我想立即开始研究它们,太迷人了!
data have;
value="O'()n?e /, ^P.iece";
run;
data want;
set have;
value_want=COMPBL((compress(value,,"kasd"));
run;
+--------------------+------------+
| value | value_want |
+--------------------+------------+
| O'()n?e /, ^P.iece | One Piece |
+--------------------+------------+