2016-03-24 19 views
0

における単語の区切りを使用して文字列を分割私はこの区切り文字を使用して非常に長い文字列を分割する方法を探しています:私はは、SAS

を行うので、もし '| '

スキャン機能は、単語の区切り文字を受け入れていないようです

scan(string,3,'| ') 

私は必要なように、それはすべての|とスペース
ではなく、すべての'| 'で分割されます。

ドキュメントでは、これを許可する修飾語句はありません。 http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000214639.htm

+0

私はただのアイデアだ: '置き換えるためにtranswrdを使用し| 'によって' _'を実行してからスキャンを使用してください –

+0

スキャン機能で区切り文字からスペースを削除しても問題ありません。余分なスペースがある場合は、ストリップまたはトリムを使用して先頭のスペースを削除します。 – Reeza

答えて

0

は私が'_'

newstring=tranwrd(string,'| ','_'); 

'| 'を交換する

自分で使用tranwrdそれを見つけたし、私は、組み合わされたときに、通常

xxx=scan(newstringstring,3,'_'); 
+1

もう少し曖昧な置換文字列を考慮する必要があります。 'FF'X –

+0

良いアイデア、私はすでに文字列に_入っていて、%に切り替えましたが、あなたの考えを試してみる –

1

INFILEはDLMSTRを持ってスキャン機能を使用することができますインフィルマジックはあなたが必要とするものを正確に行うことができます。トランスオーダーのアイデアはうまくいくはずです。

enter image description here

data test; 
    input string $50.; 
    cards4; 
This|is | pipe space| delmimited 
This| is| too I believe 
;;;; 
    run; 
data test2; 
    infile cards missover dlmstr='| '; 
    if _n_ eq 1 then input @; 
    array w[5] $64; 
    do while(not eof); 
     set test end=eof; 
     _infile_ = string; 
     input @1 w[*] @; 
     output; 
     end; 
    stop; 
    cards; 
Necessary evil 
    run;