我的引号类似于“在各个未知位置的字符串内部。我想找到/删除它们。
我正在将tranwrd()
函数用于我想删除的其他字符(例如+,-&
等)。
有谁知道怎么做?
答案 0 :(得分:2)
使用compress()
功能。第一个参数是要修改的字符串,第二个参数是要删除的字符列表。我已将该字符列表放在单引号中,以便宏处理器不会拾取%
和&
个字符。
data want;
tmp = '+blah -&blah'' "blah';
want = compress(tmp,'+-&''"%');
put tmp= want=;
run;
或者,compress()
函数提供了一些很好的方法来保留某些字符。在下面的示例中,我告诉它使用第三个参数中的k
修饰符来保留字符。它将保留的字符是空格字符(我在第二个参数中列出的)和数字,下划线字符和英文字母(由第三个参数中的n
修饰符指定)。
data want;
tmp = '+blah -&blah'' "blah';
want = compress(tmp,' ','nk');
put tmp= want=;
run;
答案 1 :(得分:1)
如果您询问如何将引号字符放在文字字符串中,则有两种选择。
首先,SAS允许使用'
和"
。你可以把一个放在另一个。
data want;
x = '"Dear me", she said.';
y = compress(x,'"');
put x= y=;
run;
其次,如果您有宏变量或两种引号都更有用,引号字符加倍可以逃脱它。
data want;
x = '"Dear me, please don''t do that", she said.';
y = compress(x,'"''');
put x= y=;
run;
请注意,在第二个示例的两个位置,我放了两个'
个字符(x赋值和y压缩)。
Compress
和tranwrd
在这里的工作方式相同(如果你有tranwrd
优于你的使用的原因),就像任何其他SAS函数或语言元素一样。
第二 - 对于多个功能,包括compress
但不包括tranwrd
或translate
- 有一个可选参数,可让您添加特定类型的所有字符。 Compress
出于某些原因,不像某些人那样支持q
,但它确实支持p
标点符号。这可能是期望的,也可能不是。
data want;
x = '"Dear me, please don''t do that", she said.';
y = compress(x,,'p');
put x= y=;
run;
或者,如果你有 的字符列表,k
可以让你keep
:
data want;
x = '"Dear me, please don''t do that", she said.';
y = compress(x,'.,','kas');
put x= y=;
run;
保留句号,逗号,a-z字符和空格字符,删除所有其他字符。
另一个有趣的观点:dequote()
将删除对的引号,如果你有它们 - 也就是说,如果你只是想删除围绕你的字符变量的引号或类似的东西这一点。