;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: strings.lisp,v 1.11 2003/04/29 00:23:21 kevin Exp $
+;;;; $Id: strings.lisp,v 1.17 2003/05/04 14:52:10 kevin Exp $
;;;;
;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
do
(setf start (1+ end))))
+(defun ndelimited-string-to-list (sequence &optional (separator #\space))
+ "Split a string by a delimitor"
+ (loop
+ with start = 0
+ for end = (position separator sequence :start start)
+ collect (nsubseq sequence start end)
+ until (null end)
+ do
+ (setf start (1+ end))))
+
#+excl
(defun list-to-delimited-string (list &optional (separator #\space))
(excl:list-to-delimited-string list separator))
(defun string-trim-last-character (s)
"Return the string less the last character"
- (aif (plusp (length s))
- (subseq s 0 (1- it))
- s))
+ (let ((len (length s)))
+ (if (plusp len)
+ (subseq s 0 (1- len))
+ s)))
+
+(defun nstring-trim-last-character (s)
+ "Return the string less the last character"
+ (let ((len (length s)))
+ (if (plusp len)
+ (nsubseq s 0 (1- len))
+ s)))
(defun string-hash (str &optional (bitmask 65535))
(let ((hash 0))
(defun escape-xml-string (string)
"Escape invalid XML characters"
(substitute-chars-strings
- string '((#\& . "&") (#\> . ">") (#\< . "<"))))
+ string '((#\& . "&") (#\> . ">") (#\< . "<") (#\" . """))))
(defun make-usb8-array (len)