このディレクトリの索引
#  
#  文字列の先頭から連続文字を切り出す
#  

連続文字列を切り出す(_文字列,_前文字列,_連続文字列,_後文字列) :-
sub_atom(_文字列,_前文字列,_連続文字列,_後文字列),
'前後には文字がないか、あるいは異なった文字がある連続文字列'(_前文字列,_後文字列,_文字).

'前後には文字がないか、あるいは異なった文字がある連続文字列'(_前文字列,_後文字列,_文字) :-
連続文字列(_同じ文字の文字列,_文字),
'前後には文字がないか、あるいは異なった文字がある'(_前文字列,_後文字列,_文字).

'前後には文字がないか、あるいは異なった文字がある'(_前文字列,_後文字列,_文字) :-
'前文字列が空であるか、前文字列の最後の文字は異なった文字である'(_前文字列,_文字),
'後文字列が空であるか、後文字列の最初の文字は異なった文字である'(_後文字列,_文字).

'前文字列が空であるか、前文字列の最後の文字は異なった文字である'(_前文字列,_文字) :-
\+(sub_atom(_前文字列,_,1,0,_文字)).

'後文字列が空であるか、後文字列の最初の文字は異なった文字である'(_後文字列,_文字) :-
\+(sub_atom(_後文字列,0,1,_,文字)).

連続文字列(_文字列,_文字) :-
先頭文字(_文字列,_先頭文字),
全て同一文字の文字列(_文字列,_文字,_残り文字列).

先頭文字(_文字列,_先頭文字) :-
sub_atom(_文字列,0,1,_,_先頭文字).

全て同一文字の文字列(_文字列,_文字,_残り文字列) :-
forall((
sub_atom(_文字列,_,1,_,_文字_1),_文字=_文字_1).

sub_atom(_文字列,_前文字列,_適合文字列,_後文字列) :-
sub_atom(_文字列,S,_,R,適合文字列),
sub_atom(_文字列,0,S,_,_前文字列),
sub_atom(_文字列,_,R,0,_後文字列).