このディレクトリの索引

nth1_split(_nth1,_文字列,_区切り文字,_副文字列) :-
        split(_文字列,[_区切り文字],_,L2),
        nth1(_nth1,L2,_副文字列).

split('',_,[],[]) :- !.
split(_文字列,_区切り文字列ならび,[_区切り文字列|R3],[_副文字列|R4]) :-
        副文字列を切り出す(_文字列,_区切り文字列ならび,_区切り文字列,_副文字列,_残り文字列),
        split(_残り文字列,_区切り文字列ならび,R3,R4).


副文字列を切り出す(_文字列,_区切り文字列ならび,_区切り文字列,_副文字列,_残り文字列) :-
        文字ならびとして切り出す(_文字列,_区切り文字列ならび,_区切り文字列,_切り出し文字ならび,_残り文字列),
        atomic_list_concat(_切り出し文字ならび,_副文字列),!.


文字ならびとして切り出す('',_,'',[],'') :- !.
文字ならびとして切り出す(_文字列,_区切り文字列ならび,_区切り文字列,[],_残り文字列) :-
        文字列の先頭は区切り文字列である(_文字列,_区切り文字列ならび,_区切り文字列,_残り文字列),!.
文字ならびとして切り出す(_文字列,_区切り文字列ならび,_区切り文字列,[_文字|R4],_残り文字列) :-
        一文字切り出す(_文字列,_文字,_残り文字列_2),
        文字ならびとして切り出す(_残り文字列_2,_区切り文字列ならび,_区切り文字列,R4,_残り文字列).


文字列の先頭は区切り文字列である(_文字列,_区切り文字列ならび,_区切り文字列,_残り文字列) :-
        member(_区切り文字列,_区切り文字列ならび),
        atom_length(_区切り文字列,_長さ),
        sub_atom(_文字列,0,_長さ,_残り文字数,_区切り文字列),
        sub_atom(_文字列,_,_残り文字数,0,_残り文字列),!.

一文字切り出す(_文字列,_文字,_残り文字列_2) :-
        sub_atom(_文字列,0,1,_,_文字),
        sub_atom(_文字列,1,_,0,_残り文字列_2).