この前は初めてながら、何か10進数を渡すと2進数・16進数に変換して挿入する関数を書いてみました。
ちょこっと進化させてみます。
まず、10進数が入ったリストを渡すと、
リストの各要素に対して上と同じような結果を返してくれる関数を考えてみました。
引数としてリストを受け取ったら、
mapcarとlambdaを使って、リストの各要素を2進/16進に変換してます。
試しに10から40までの数字が入ったlistAを引数に渡してみます。
それぞれを処理して、改行付きで書きだしています。
いちいちリストを定義するのも面倒なので、
10,20,30,40
とか入力してある数字を読み込んで上と同じ処理をさせてみたいと思います。
前準備として、
こんな感じで、カンマで区切った文字列を数字のリストにする関数を作ってみます。
split-stringを使ってカンマごとに分割された文字列のリストを作って、
string-to-intで文字列を数字に変換してます。
実験すると、上手く動いてそうな感じ。
後はEmacs上で範囲選択した箇所の文字列を参照して、
今までの関数を適用してあげれば望むものが出来そうな感じですね。
範囲選択した文字列を参照するには、
こんな感じで書くと良さそうです。
こんな感じで背景が青くなってる部分を選択して、
先ほどの関数を呼び出すと
一番下に領域選択している個所の文字列が表示されてます。
というわけで、
範囲選択->カンマで区切って整数のリスト作成
->各整数を2進/16進変換して結果を挿入
するプログラムが下みたいな感じになりました。
なんか使われてない変数が混じってますね・・・
こんな感じでカンマ区切りで入力した10進数の文字列を領域選択して、
先ほどの関数を呼び出すと・・・
こうなりました。
何かに使えそうな気がする・・・
色々勉強していくと、もっとシンプルに同じ事が出来そうですね。
勉強がてら、文字列Aの何文字目に文字列Bが含まれているのかを返す関数も作ってみました。
文字列Aを一文字目から切り取っていって、文字列Bと初めて一致した文字数を返す感じです。
結果はこんな感じ。
文字列Aは"http://www.google・・・"で、文字列Bとして"www" "test" "just"を渡して結果を見てます。




































