2015-08-21 454 views
3

我正在使用SAS中的notalnum函數。輸入是一個db字段。現在,該函數返回一個值,告訴我每個字符串末尾都有一個特殊字符。 它不是空格字符,因爲我在輸入字段上使用了COMPRESS函數。SAS打印特殊字符的ASCII值

如何在每個字符串的末尾打印特殊字符的ACII值?

回答

1

$ 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是一個很好的添加到列表中的非破壞性空間。

0

如果你想看到的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 

喬的解決方案是很優雅,但看到我的十六進制 - >十進制轉換技能很差,我傾向於這樣做。

+0

但是,十六進制值實際上比十進制等價物更易於使用,因爲您可以在文字中使用它。 '0D'x是回車。 – Tom