--- title: リストの n 番目を取り出す author: kazu634 date: 2009-11-12 url: /2009/11/12/_1391/ wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4927;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - Emacs - Lisp ---

Emacs Lisp でリストの n 番目を取り出す命令がありました。リストを配列みたいに使う時には nth というのがあるみたいです。

nth
(nth index list)。indexは0から始まる。

使ってみました。今回は「_」区切りの文字列を分割してみます。

(defun generate_candidate (str)
(let*
((str_list (split-string str "_"))  ;; 引数として与えられたものを「_」で区切ってリストに
(site (nth  str_list))            ;; リストの0番目をローカル変数「site」に代入。以下同じ。
(shopname (nth 1 str_list))
(address (nth 2 str_list))
(url (nth 3 str_list))
(tel (nth 4 str_list)))
(message (format "[%s] %s" site shopname))))
(generate_candidate
"Hotpepper_赤ちり亭 大森店_東京都大田区大森北1-3-7サファイア北ビルB1F_http://www.hotpepper.jp/strJ000030775/?vos=nhppalsa000016_03-5753-0399")

こうすることで、「[Hotpepper] 赤ちり亭 大森店」と表示されます。

こいつを使って、anythingのソースを作ってみるぞ!