このディレクトリの索引

%  
%  常に置換可能な部分のうち一箇所だけが置換される述語定義です。
%  
%  対象文字列がccで文字列中にcが3個以上連なっている場合などは
%  最初のccの切り出しの後、そのccを除外して置換対象を探すか、
%  あるいは最初のcの次のc以後を置換対象とするかの選択が有り得ます。
%  
%  以下は前者、一旦置換対象になった文字列を外して、そのあとからの
%  文字列から次の置換対象文字列を探す場合の述語定義です。
% 
%  この定義はどこが置換された場所であるか、分かりにくいのが欠点です。
%  


'常に置換可能な部分のうち一箇所だけが置換される。'(_文字列,_置換対象文字列,_置換文字列,_置換された文字列) :-
'常に置換可能な部分のうち一箇所だけが置換される。
置換対象文字列があれば全て書き換える'(_文字列,_置換対象文字列,_置換文字列,_置換された文字列),!.
'常に置換可能な部分のうち一箇所だけが置換される'(_文字列,_,_,_文字列).


'常に置換可能な部分のうち一箇所だけが置換される。
置換対象文字列があれば全て書き換える'(_文字列,_置換対象文字列,_置換文字列,_置換された文字列) :-
置換対象文字列を得る(_文字列,_置換対象文字列,_前文字列,_後文字列),
'常に置換可能な部分のうち一箇所だけが置換される'(_後文字列,_置換対象文字列,_置換文字列,_置換された文字列_2),
atomic_list_concat([_前文字列,_置換文字列,_置換された文字列_2],_置換された文字列).


置換対象文字列を得る(_文字列,_置換対象文字列,_前文字列,_後文字列) :-
sub_atom(_文字列,S,_,R,_置換対象文字列),
sub_atom(_文字列,0,S,_,_前文字列),
sub_atom(_文字列,_,R,0,_後文字列),!.