正規表現とDOループの組み合わせは、それを達成することができます。
ステップ1:同じ置換文字に解決
強調文字がで分離された単一行に置かれ、次のように変換テーブルを構築します|シンボル。
data conversions;
infile datalines dsd;
input orig $ repl $;
datalines;
ç,c
ğ,g
ı,l
ö|ò|ó,o
ë|è,e
;
ステップ2:マクロ変数に保管して、オリジナルと交換弦
proc sql noprint;
select orig, repl, count(*)
into :orig separated by ";",
:repl separated by ";",
:nrepl
from conversions;
quit;
ステップ3:、ちょうどそれがどのように動作するかを示すために実際の変換
をやらせるの1つの列だけを処理します。 "C GL OO E、E" すべての文字列を処理するために
、我々は
があなたのテーブルがmySource
という名前で言うと、あなたはすべての文字をたいアレイを使用する:myString
結果として得られる
data convert(drop=i re);
myString = "ç ğı òö ë, è";
do i = 1 to &nrepl;
re = prxparse("s/" || scan("&orig",i,";") || "/" || scan("&repl",i,";") || "/");
myString = prxchange(re,-1,myString);
end;
run;
処理される変数。そのためにcols
というベクトルを作成します。
テーブルの行数はいくつですか? –
ほぼ100Kですが、時には100万行以上になる可能性があります –