このディレクトリの索引
#
#  文字列を文字列要素と数値列要素に分離します。
#


文字列を文字列要素と数値列要素に分離する(_文字列,_分離要素) :-
        文字列を文字列要素と数値列要素に分離する(_文字列,_前文字列,_数値列,_後文字列),
        文字列数値列の順で取り出す(_前文字列,_数値列,_分離要素).

文字列を文字列要素と数値列要素に分離する(_文字列,_前文字列,_数値列,_後文字列) :-
        文字列から数値列を切り出す(_文字列,St1,St2,R2),
        sub_atom(_文字列,0,St1,_,_前文字列),
        sub_atom(_文字列,St1,St2-St1,R,_数値列),
        sub_atom(_文字列,St1+St2,R,0,_後文字列).
文字列を文字列要素と数値列要素に分離する(_文字列,_前文字列,_数値列,_後文字列) :-
        文字列から数値列を切り出す(_文字列,St1,St2,R2),
        sub_atom(_文字列,St1,St2-St1,R2,_),
        sub_atom(_文字列,St2,R2,0,_文字列2),
        文字列から数値列を切り出す(_文字列2,_数値列).
文字列を文字列要素と数値列要素に分離する(_文字列,_文字列,'','').

文字列数値列の順で取り出す(_前文字列,'',_前文字列) :- !.
文字列数値列の順で取り出す(_前文字列,_,_前文字列).
文字列数値列の順で取り出す(_,_数値列,_数値列).

文字列から数値列を切り出す(_文字列,St1,St2,R2) :-
        sub_atom(_文字列,St1,1,R,A),
        A @>= '0',A @=< '9',
        sub_atom(_文字列,St2,1,_,B),
        St2 > St1,
        \+((B @>= '0',B @=< '9')),!.

文字列から数値列を切り出す(_文字列,_数値列) :-
        文字列から数値列を切り出す(_文字列,St1,St2,R2),
        sub_atom(_文字列,St1,St2-St1,_,_数値列).
文字列から数値列を切り出す(_文字列,_数値列) :-
        文字列から数値列を切り出す(_文字列,St1,St2,R2),
        sub_atom(_文字列,St1,St2-St1,R2,_),
        sub_atom(_文字列,St2,R2,0,_文字列2),
        文字列から数値列を切り出す(_文字列2,_数値列).