r4801: Auto commit for Debian build
[kmrcl.git] / strings.lisp
index a348ed5211af5fb91491d624f1798f3a343b71bf..028d97870c2fa4aacc96f5955f9fa1cabed95e8f 100644 (file)
@@ -7,7 +7,7 @@
 ;;;; 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))
@@ -183,7 +201,7 @@ list of characters and replacement strings."
 (defun escape-xml-string (string)
   "Escape invalid XML characters"
   (substitute-chars-strings 
-   string '((#\& . "&amp;") (#\> . "&gt;") (#\< . "&lt;"))))
+   string '((#\& . "&amp;") (#\> . "&gt;") (#\< . "&lt;") (#\" . "&quot;"))))
 
 
 (defun make-usb8-array (len)