chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-users] efficient procedure for setting a substring?


From: Graham Fawcett
Subject: [Chicken-users] efficient procedure for setting a substring?
Date: Fri, 19 May 2006 15:04:41 -0400

While speaking of buffers, is there an efficient, low-level way to set
a substring within an existing string? Like this but faster:

(define (substring-set! buffer replace start #!optional (count #f))
(let ((buffer-size (string-length buffer))
      (replace-len (string-length replace)))
  (let loop ((current 0))
    (let ((buffer-pos (+ current start)))
      (when (and (< current replace-len)
                 (< buffer-pos buffer-size)
                 (if count (< current count) #t))
        (string-set! buffer buffer-pos (string-ref replace current))
        (loop (add1 current)))))))

;;; example
;;; #;1> (define s (make-string 10))
;;; #;2> (substring-set! s "hello" 3 4 )
;;; #;3> s
;;; "   hell   "

Thanks,
Graham




reply via email to

[Prev in Thread] Current Thread [Next in Thread]