このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1267796762/200
#  [課題]携帯のiアプリをSTARを使い作成しています。  
#  学校のホームページに載っている休講情報に接続して、それから先生の名前と日にちだけ取り出す方法が知りたいです。  
#  休講情報は  
#   
#  6月  
#  24日  
#   野口 文子 先生  
#   山下 紗枝 先生  
#   井上 恵子 先生  
#   
#  25日  
#   山下 紗枝 先生  
#   
#  26日  
#  ・  
#  ・  
#  ・  
#   
#  のようになっています。  
#  先生の名前の前の全角スペースを目印にして、配列に入れるそうなのですが・・・。  
#   
#  [形態]STARアプリケーション 
#   
#  [Ver]1.6.0_18 
#   
#  [期限]6月29日お昼頃 
#   
#  [補足] 
#  期限が短くてすみません。 
#  ペアになりiアプリを製作しています。ペアの友達が時間割りを表示するところをつくり、私は学校のHPからとってくる休講情報の文字列処理を担当しています。わかりづらいとはおもいますが、よろしくお願いします。 
# 
# 

学校のホームページに載っている休講情報に接続して、それから先生の名前と日にちだけ取り出す(URL,_休講情報ならび) :-
        w3c(URL,Lines),
        先生の名前と日にちだけ取り出す(Lines,_休講情報ならび),!.

先生の名前と日にちだけ取り出す(Lines,_休講情報ならび) :-
        append(L0,[A|R1],Lines),
        sub_atom(A,_,2,_,先生),
        月日を取り出す(L0,_月,_日),
        ある日の休講情報ならびを得る([A|R1],_月,_日,_ある日の休講となる情報ならび,_残りならび),
        先生の名前と日にちだけ取り出す(_残りならび,R),
        append(_ある日の休講となる情報ならび,_休講情報ならび),!.
先生の名前と日にちだけ取り出す(_,[]) :- !.

月日を取り出す(Lines,_月,_日) :-
        append(_,[A|_],Lines),sub_atom(A,S,1,_,月),sub_atom(A,0,S,_,_月),
        append(_,[B|_],Lines),sub_atom(A,S,1,_,日),sub_atom(B,0,S,_,_日),!.

ある日の休講情報ならびを得る([],_,_,[],[]) :- !.
ある日の休講情報ならびを得る(['\n'|R],_,_,[],R) :- !.
ある日の休講情報ならびを得る([A|R1],_月,_日,[[_氏名,_月,_日]|R2],_残りならび) :-
        sub_atom(A,_,2,_,先生),
        split(A,[' '],[_姓,_名,先生]),
        concat_atom([_姓,_名],_氏名),
        ある日の休講情報ならびを得る(R1,_月,_日,R2,_残りならび).