2017-10-04 10 views
0

ミドルネームの頭文字とミドルイニシャルを含む文字列からミドルイニシャルを削除する方法を探しています(例:「Mary A」は「Mary」でなければなりません)。ミドルイニシャルを削除しますが、ミドルネームは文字列から削除しないでください。

しかし、私は初期(例 "Mary Ann"が "Mary Ann"のままである)以上の場合、中間/秒の名前を保持する必要があります。ここで

多くのおかげで、

マット

答えて

0

は、この使用して正規表現置換を行う方法の例です。私は、プロシージャ・SQLを使用しましたが、これはまた、データのステップで動作します:次のように正規表現が構築さ

data names; 
input name & $5.; 
cards; 
Aa A 
Aa Aa 
Aaa A 
; 
run; 

proc sql; 
    select prxchange('s/^(\w+)\s+\w\s*$/$1/',-1,name) from names; 
quit; 

  • キャプチャ最初の単語
  • マッチスペースを、単一文字の場合は末尾の空白数
  • 完全一致の場合は最初の単語のみを返し、そうでない場合は入力文字列全体をそのまま返します。
1

は機能scan使用してみてください。その結果

data test; 
    input name $20.; 
    cards; 
    Mary A 
    Anthony B 
    Mary Ann 
    Anthony Bernard 
    ; 
run; 

data res; 
    set test; 
    if (length(scan(name,2))=1) then name=scan(name,1); 
run; 

を、あなたが得る:

Mary 
Anthony 
Mary Ann 
Anthony Bernard 
関連する問題