split-string
守岡 知彦 / MORIOKA Tomohiko
tomo @ kanji.zinbun.kyoto-u.ac.jp
2001年 7月 9日 (月) 18:22:42 JST
私も最近 GT 2000 の code book を変換する program 書いている時に
split-string の非互換性ではまりました。
これは双方の仕様の問題なので poe ではどうしようもないですね。APEL でど
うしてもやるなら pstring.el とかを作って、emacs:split-string と
xemacs:split-string みたいなのを作るとかですかね?(名前空間 (package)
欲しいですね)
;; 個人的には変なことをしない XEmacs のものの方が好き。
>>>>> In [apel-ja : No.00648]
>>>>> "山岡さん" = Katsumi Yamaoka <yamaoka @ jpl.org> wrote:
山岡さん> >>>>> In [apel-ja : No.00647]
山岡さん> >>>>> "OHASHI, Akira" (大橋 彰) <bg66 @ koka-in.org> wrote:
山岡さん> >> (delete "" (split-string "/hoge/fuga" "/"))
大橋さん> これだと (split-string "/hoge//fuga" "/") の間の "" も消えちゃ
大橋さん> います。
山岡さん> むむっ ^^;;、
山岡さん> (let ((path "/hoge//fuga"))
山岡さん> (if (string-match "^/?\\(.+\\)/?$" path)
山岡さん> (split-string (match-string 1 path) "/")
山岡さん> (split-string path "/")))
山岡さん> これは文字列の最初と最後の "/" を無視させているだけですが、この
山岡さん> 調子で発展させていくと (どちらかの) split-string の定義と同じよ
山岡さん> うなものになってしまうのでしょうね。:-p
GNU Emacs で XEmacs の split-string を作るなら
(defun xemacs-split-string (string &optional separators)
(unless separators
(setq separators "[ \f\t\n\r\v]+"))
(let ((ret (split-string string separators)))
(if (string-match (concat "^" separators) string)
(setq ret (cons "" ret)))
(if (string-match (concat separators "$") string)
(setq ret (append ret '(""))))
ret))
みたいな感じでしょうか?逆に XEmacs で GNU Emacs の split-string を作
るなら
(defun emacs-split-string (string &optional separators)
(unless separators
(setq separators "[ \f\t\n\r\v]+"))
(let ((ret (split-string string separators)))
(if (string-match (concat "^" separators) string)
(setq ret (cdr ret)))
(if (string-match (concat separators "$") string)
(setq ret (butlast ret)))
ret))
見たいな感じでしょうか?
--
┯━…‥・懐かしい未来の記憶をふと思い出しかけた・‥…━━┯━━━┯━
││ ─ │ ─ / ─ ┼─ ┬ ─ ─┼ ┬┴─
┼┼─┼|〓━─┼ 守岡 知彦 (MORIOKA Tomohiko) <tomo @ m17n.org> ─ ─┬
┻┻━┻━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
More information about the APEL-ja
mailing list