SAS打印特殊字符的ASCII值

5

我正在使用SAS中的notalnum函数。输入是一个数据库字段。现在,该函数返回一个值,告诉我每个字符串末尾都有一个特殊字符。

这不是一个空格字符,因为我已经在输入字段上使用了COMPRESS函数。

我如何打印出每个字符串末尾特殊字符的ASCII值?

2个回答

3
$HEX.格式是最容易查看它们的方式:
data have;
  var="Something With A Special Char"||'0D'x;
run;

data _null_;
  set have;
  rul=repeat('1 2 3 4 5 6 7 8 9 0 ',3);  *so we can easily see what char is what;
  put rul=;
  put var= $HEX.;
run;

您还可以在压缩(var=compress(var,,'c');)时使用选项c来压缩掉控制字符(通常是您在这些情况下遇到的字符)。

最后 - 如果您的数据来自网络,则将“ A0 ”x添加到列表中是一个不错的选择,它是表示不间断空格的字符。


1

如果您想查看字符在ASCII表中的位置,可以使用rank()函数,例如:

data _null_;
  string = 'abc123';
  do i = 1 to length(string);
    asc = rank(substr(string,i,1));
    put i= asc=;
  end;
run;

给出:

i=1 asc=97
i=2 asc=98
i=3 asc=99
i=4 asc=49
i=5 asc=50
i=6 asc=51

Joe的解决方案非常优雅,但是考虑到我的十六进制转十进制的技能相当差,我倾向于用这种方式。


但是实际上,十六进制值比十进制等价物更容易使用,因为您可以在文字中使用它。'0D'x 是回车符。 - Tom
我想使用十六进制编码处理Unicode数据会更好。 - Robert Penridge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接