-<;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
+;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
;;;; *************************************************************************
;;;; FILE IDENTIFICATION
;;;;
;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: strings.lisp,v 1.30 2003/05/16 08:37:20 kevin Exp $
+;;;; $Id: strings.lisp,v 1.35 2003/06/06 21:59:30 kevin Exp $
;;;;
;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
;;;; *************************************************************************
-(in-package :kmrcl)
+(in-package #:kmrcl)
;;; Strings
(defun count-string-words (str)
(declare (simple-string str)
- (optimize (speed 3) (safety 0)))
+ (optimize (speed 3) (safety 0) (space 0)))
(let ((n-words 0)
(in-word nil))
(declare (fixnum n-words))
- (dotimes (i (length str))
- (let ((ch (char str i)))
- (declare (character ch))
- (if (alphanumericp ch)
- (unless in-word
- (incf n-words)
- (setq in-word t))
- (setq in-word nil))))
- n-words))
+ (do* ((len (length str))
+ (i 0 (1+ i)))
+ ((= i len) n-words)
+ (declare (fixnum i))
+ (if (alphanumericp (schar str i))
+ (unless in-word
+ (incf n-words)
+ (setq in-word t))
+ (setq in-word nil)))))
;; From Larry Hunter with modifications
(defun position-char (char string start max)
(setq pos (1+ end))))
-(defun list-to-delimited-string (list &optional (separator #\space))
- (format nil (format nil "~~{~~A~~^~A~~}" separator) list))
+(defun list-to-delimited-string (list &optional (separator " "))
+ (format nil (concatenate 'string "~{~A~^" (string separator) "~}") list))
(defun string-invert (str)
"Invert case of a string"
(defun escape-xml-string (string)
"Escape invalid XML characters"
- (substitute-chars-strings
- string '((#\& . "&") (#\> . ">") (#\< . "<") (#\" . """))))
-
+ (substitute-chars-strings string '((#\& . "&") (#\< . "<"))))
(defun make-usb8-array (len)
(make-array len :adjustable nil
vec))
(defun concat-separated-strings (separator &rest lists)
- (format nil (format nil "~~{~~A~~^~A~~}" separator) (append-sublists lists)))
+ (format nil (concatenate 'string "~{~A~^" (string separator) "~}")
+ (append-sublists lists)))
(defun only-null-list-elements-p (lst)
(or (null lst) (every #'null lst)))