[HARLEQUIN][Common Lisp HyperSpec (TM)] [Previous][Up][Next]



string-upcase string &key start end => cased-string

string-downcase string &key start end => cased-string

string-capitalize string &key start end => cased-string

nstring-upcase string &key start end => string

nstring-downcase string &key start end => string

nstring-capitalize string &key start end => string

Arguments and Values:

string---a string designator. For nstring-upcase, nstring-downcase, and nstring-capitalize, the string designator must be a string.

start, end---bounding index designators of string. The defaults for start and end are 0 and nil, respectively.

cased-string---a string.


string-upcase, string-downcase, string-capitalize, nstring-upcase, nstring-downcase, nstring-capitalize change the case of the subsequence of string bounded by start and end as follows:


string-upcase returns a string just like string with all lowercase characters replaced by the corresponding uppercase characters. More precisely, each character of the result string is produced by applying the function char-upcase to the corresponding character of string.


string-downcase is like string-upcase except that all uppercase characters are replaced by the corresponding lowercase characters (using char-downcase).


string-capitalize produces a copy of string such that, for every word in the copy, the first character of the ``word,'' if it has case, is uppercase and any other characters with case in the word are lowercase. For the purposes of string-capitalize, a ``word'' is defined to be a consecutive subsequence consisting of alphanumeric characters, delimited at each end either by a non-alphanumeric character or by an end of the string.

nstring-upcase, nstring-downcase, nstring-capitalize

nstring-upcase, nstring-downcase, and nstring-capitalize are identical to string-upcase, string-downcase, and string-capitalize respectively except that they modify string.

For string-upcase, string-downcase, and string-capitalize, string is not modified. However, if no characters in string require conversion, the result may be either string or a copy of it, at the implementation's discretion.


 (string-upcase "abcde") =>  "ABCDE"
 (string-upcase "Dr. Livingston, I presume?")
 (string-upcase "Dr. Livingston, I presume?" :start 6 :end 10)
=>  "Dr. LiVINGston, I presume?"
 (string-downcase "Dr. Livingston, I presume?")
=>  "dr. livingston, i presume?"

 (string-capitalize "elm 13c arthur;fig don't") =>  "Elm 13c Arthur;Fig Don'T"
 (string-capitalize " hello ") =>  " Hello "
 (string-capitalize "occlUDeD cASEmenTs FOreSTAll iNADVertent DEFenestraTION")
=>   "Occluded Casements Forestall Inadvertent Defenestration"
 (string-capitalize 'kludgy-hash-search) =>  "Kludgy-Hash-Search"
 (string-capitalize "DON'T!") =>  "Don'T!"    ;not "Don't!"
 (string-capitalize "pipe 13a, foo16c") =>  "Pipe 13a, Foo16c"

 (setq str (copy-seq "0123ABCD890a")) =>  "0123ABCD890a"
 (nstring-downcase str :start 5 :end 7) =>  "0123AbcD890a"
 str =>  "0123AbcD890a"

Side Effects:

nstring-upcase, nstring-downcase, and nstring-capitalize modify string as appropriate rather than constructing a new string.

Affected By: None.

Exceptional Situations: None.

See Also:

char-upcase, char-downcase


The result is always of the same length as string.

The following X3J13 cleanup issues, not part of the specification, apply to this section:

[Starting Points][Contents][Index][Symbols][Glossary][Issues]
Copyright 1996, The Harlequin Group Limited. All Rights Reserved.