プログラミングGauche 13章 文字と文字列の処理

文字列処理の各手続きを利用して、ユニコードエスケープ(unicode escape)処理をする手続きを作ってみる。

(use srfi-13) ;; for string-concatenate

(define (char->unicode-escape char)
  (if (char>=? #\u007f char) ;; is ASCII ?
      (string char)
      (string-append "\\u" (number->string (char->ucs char) 16))))

(define (string->unicode-escape str)
  (let ((str-lis (string->list str)))
       (define (iter lis)
         (if (null? lis)
             '()
             (cons (char->unicode-escape (car lis))
                   (iter (cdr lis)))))
       (string-concatenate (iter str-lis))))

(print (string->unicode-escape "Hello, こんにちは"))
gosh> Hello, \u3053\u3093\u306b\u3061\u306f
#<undef>
プログラミングGauche
プログラミングGauche

posted with amazlet at 08.11.14
Kahuaプロジェクト
オライリージャパン
売り上げランキング: 22775
«
»