On this page:
string+ false?
ensure-string
string-length/ c
string-delimit
string-ellipsify
string-sentencecase
string-titlecase*
number+ false->string+ false
string+ false->number+ false
string+ false->symbol+ false
symbol+ false->string+ false

27 String utilities

 (require (planet untyped/unlib/string))
Useful string utilities. Compatible with PLT 4 languages.

(string+false? item)  boolean?
  item : any
Returns #t if item is a string and #f otherwise.

(ensure-string item)  any
  item : any
Converts bytes arguments to strings: passes all other arguments straight through.

(string-length/c max)  flat-contract?
  max : natural
(string-length/c min max)  flat-contract?
  min : natural
  max : natural
Creates a contract that recognises strings with a length within the specified inclusive bounds.

(string-delimit items    
  delimiter    
  [#:prefix prefix    
  #:suffix suffix])  string?
  items : (listof string?)
  delimiter : string?
  prefix : (U string? #f) = #f
  suffix : (U string? #f) = #f
Similar to string-join from SRFI 13, except that the optional #:prefix and #:suffix arguments can be provided to add a prefix or suffix string.

Examples:

  > (string-delimit '("1" "2" "3") ",")

  "1,2,3"

  > (string-delimit '("1" "2" "3") "," #:prefix "[")

  "[1,2,3"

  > (string-delimit '("1" "2" "3") "," #:suffix "]")

  "1,2,3]"

  > (string-delimit '("1" "2" "3") "," #:prefix "[" #:suffix "]")

  "[1,2,3]"

  > (string-delimit '("1" "2" "3") "," #:prefix #f #:suffix #f)

  "1,2,3"

(string-ellipsify str [max-length ellipsis])  string?
  str : string?
  max-length : natural? = 20
  ellipsis : string? = "..."
Returns a shortened version of str that is never longer than max-length. If necessary, str is truncated and ellipsis is appended.

Examples:

  > (string-ellipsify
     "The quick brown fox jumped over the lazy dog.")

  "The quick brown f..."

  > (string-ellipsify
     "The quick brown fox.")

  "The quick brown fox."

(string-sentencecase str)  string?
  str : string?
Returns a copy of str with the first character upcased.

Examples:

  > (string-sentencecase
     "lowercase to capitalised")

  "Lowercase to capitalised"

  > (string-sentencecase
     "Capitalised stays capitalised")

  "Capitalised stays capitalised"

  > (string-sentencecase
     "ALLCAPS stays ALLCAPSED")

  "ALLCAPS stays ALLCAPSED"

(string-titlecase* str)  string?
  str : string?
Like string-titlecase, in that the first character of each word is upcased, except that any upcase characters are left upcased.

Examples:

  > (string-titlecase*
     "lowercase to titlecase")

  "Lowercase To Titlecase"

  > (string-titlecase*
     "InterCapsed stays interCapsed")

  "InterCapsed Stays InterCapsed"

  > (string-titlecase*
     "ALLCAPS stays ALLCAPSED")

  "ALLCAPS Stays ALLCAPSED"

(number+false->string+false num)  (U string? #f)
  num : (U number? #f)
A version of number->string that accepts and passes through #f.

(string+false->number+false str)  (U number? #f)
  str : (U string? #f)
A version of string->number that accepts and passes through #f.

(string+false->symbol+false str)  (U symbol? #f)
  str : (U string? #f)
A version of string->symbol that accepts and passes through #f.

(symbol+false->string+false sym)  (U string? #f)
  sym : (U symbol? #f)
A version of symbol->string that accepts and passes through #f.