さくらんぼのlambda日記

lambdaちっくなことからゲーム開発までいろいろ書きます。

2010-02-01から1ヶ月間の記事一覧

ちょっと引っ越し / 鯖使ってる人へ連絡

なんかついに長年住んでいたところから引っ越しするらしいです。 その影響でしばらくネット見れないかもしれません。あと、自分のところの鯖を使っている人は鯖が2−3週間落ちているので よろしくお願いします。

なんか必死

仕事がデスマってるせいで更新停滞気味です。なんとかしたいところですね。Common Lispの文字列のやつももう残りわずかなのでさっくりかたづけたいです。

Lispで文字を寄せる

文字を寄せる方法を簡単にですが実装してみました。 (defun make-string-lefted (count target) (let((space-num (- count (length target)))) (concatenate 'string target (make-string space-num :initial-element #\Space)))) (defun make-string-righte…

全ゲ連参加してきました

全ゲ連に参加してきました! 前回初参加して、今回が2回目の参加です。普段ゲーム開発系の話題が出来ないので色々充実できました。ありがとうございます。

マルチバイト文字の数を数える

どういう処理系を使っているかにもよりますが、最近の処理系ですと問題無くカウントできる気がします。 (length "あああ") 3

文字列中に含まれている任意文字列の位置を求める

これも正規表現ライブラリcl-ppcreを使えばラクチン!

マルチバイト文字列の最後の1文字を削除する

どういう処理系を使って(以下略 (setq *my-strings* "あいうえお") "あいうえお" (subseq *my-strings* 0 (- (length *my-strings*) 1)) "あいうえ"

文字列中で指定したパターンにマッチする部分を置換する

これは正規表現ライブラリcl-ppcreを紹介するときに紹介しましたね。ここでは省略してしまいまーす。

"次"の文字列を取得する

これは前回つかったchar-codeとcode-charという文字コードから文字を生成する関数を利用すればできそうですね。 (code-char (char-code #\a)) #\a うん。 #\aから数字にして、数字から文字に変換できているようですね。 (code-char (+ 1 (char-code #\a))) #…

Lispで文字列! その2!

今日も昨日の続きです。 残件はー。 文字列を中央寄せ・左詰・右詰する "次"の文字列を取得する 文字列を暗号化する 文字列中で指定したパターンにマッチする部分を置換する 文字列中に含まれている任意文字列の位置を求める 文字列の末端の改行を削除する …

でも無理だっ

終わると思ったんですけど。もうちょっとだけ続きそうです。残るは 文字列を中央寄せ・左詰・右詰する "次"の文字列を取得する 文字列を暗号化する 文字列中で指定したパターンにマッチする部分を置換する 文字列中に含まれている任意文字列の位置を求める …

文字列を浮動小数点に変換する

ちょっと順番が前後してしまいましたが、今度は小数などを読み込む方法です。 read-from-stringを使えばらくちんです。 (read-from-string "10.0") 10.0 4 (read-from-string "1/2") 1/2 3 ちなみにread-from-stringはLispのリテラルを理解できるので複素数…

ASCII文字をコード値に(コード値をASCII文字に)変換する

これはchar-codeを使えば実現できます。Lispだと文字の表現が普通の言語と違う(#\をつける)ところだけ注意が必要でしょうか。 (char-code #\A) 65

8進文字列を整数に変換する && 16進文字列を整数に変換する

Lispだとこれらの変換は一纏めで処理できるのでまとめてしまいます。 (parse-integer "11" :radix 2) 3 2 (parse-integer "77" :radix 8) 63 2 (parse-integer "99" :radix 10) 99 2 (parse-integer "FF" :radix 16) 255 2 (parse-integer "FFF" :radix 16) …

文字列の先頭と末尾の空白文字を削除する

これはそのものずばりtrimを使えばできます。先頭とか末尾を指定する場合には、string-left-trimやstring-right-trimを使うことが出来ます。 ただ、Common Lispのtrimは他の処理系(Ruby、PHPなど)と違って空白文字に相当するものを引数で指定するようです。…

文字列を1行ずつ処理する

これはread-lineを使えば簡単に実現できます。with-input-from-stringで文字列をストリームにしてから処理という感じですね。 (with-input-from-string (in "foo bar baz") (do ((line (read-line in nil) (read-line in nil))) ((null line)) (print line))…

文字列を1文字ずつ処理する

これは実はすでに使っていますね。mapを使えば実現できます。 (map 'string #'(lambda (x) (princ x)) "hogehoge") hogehoge "hogehoge" こんな感じで出来ます。

Lispで文字列処理まとめて!

いい加減おしまいにしたくなってきたので、文字列関連を一気に処理してしまおうと思います。 ただ、 文字列中の式を評価し値を展開する だけは難しそうなので後日やります。