このディレクトリの索引

タブ区切りのn列のm字目からn字目までを切り出す(_n列,_m字目,_n字目,_文字列,_副文字列) :-
        nth1_split(_n列,_文字列,['\t'],_副文字列_1),
        _n_1 is _n - 1,
        sub_atom(_副文字列_1,_m字目,_n_1,_,_副文字列).

タブ区切りのn列を切り出す(_n列,_m字目,_n字目,_文字列,_副文字列) :-
        nth1_split(_n列,_文字列,['\t'],_副文字列),!.

nth1_split(_nth1,_文字列,_区切り文字ならび,_副文字列) :-
        split(_文字列,_区切り文字ならび,1,_nth1,_区切り文字列,_副文字列,_残り文字列).


split('',_,_,_,_,_,_) :- !,fail.
split(_文字列,_区切り文字列ならび,_nth1_1,_nth1,_区切り文字列,_副文字列,_残り文字列) :-
        副文字列を切り出す(_文字列,_区切り文字列ならび,_区切り文字列_1,_副文字列_1,_残り文字列_1),
        split_1(_区切り文字列ならび,_nth1_1,_区切り文字列_1,_副文字列_1,_残り文字列_1,_nth1,_区切り文字列,_副文字列,_残り文字列).


split_1(_区切り文字列ならび,_nth1,_区切り文字列,_副文字列,_残り文字列,_nth1,_区切り文字列,_副文字列,_残り文字列).
split_1(_区切り文字列ならび,_nth1_1,_,_,_残り文字列_1,_nth1,_区切り文字列,_副文字列,_残り文字列) :-
        _nth1_2 is _nth1_1 + 1,
        split(_残り文字列_1,_区切り文字列ならび,_nth1_2,_nth1,_区切り文字列,_副文字列,_残り文字列).


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

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


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

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