Next: , Previous: Alphabetic Case in Strings, Up: Strings


6.5 Cutting and Pasting Strings

— procedure: string-append string ...

Returns a newly allocated string made from the concatenation of the given strings. With no arguments, string-append returns the empty string ("").

          (string-append)                         =>  ""
          (string-append "*" "ace" "*")           =>  "*ace*"
          (string-append "" "" "")                =>  ""
          (eq? str (string-append str))           =>  #f ; newly allocated
     
— procedure: substring string start end

Returns a newly allocated string formed from the characters of string beginning with index start (inclusive) and ending with end (exclusive).

          (substring "" 0 0)              => ""
          (substring "arduous" 2 5)       => "duo"
          (substring "arduous" 2 8)       error--> 8 not in correct range
          
          (define (string-copy s)
            (substring s 0 (string-length s)))
     
— procedure: string-head string end

Returns a newly allocated copy of the initial substring of string, up to but excluding end. It could have been defined by:

          (define (string-head string end)
            (substring string 0 end))
     
— procedure: string-tail string start

Returns a newly allocated copy of the final substring of string, starting at index start and going to the end of string. It could have been defined by:

          (define (string-tail string start)
            (substring string start (string-length string)))
          
          (string-tail "uncommon" 2)      =>  "common"
     
— procedure: string-pad-left string k [char]
— procedure: string-pad-right string k [char]

These procedures return a newly allocated string created by padding string out to length k, using char. If char is not given, it defaults to #\space. If k is less than the length of string, the resulting string is a truncated form of string. string-pad-left adds padding characters or truncates from the beginning of the string (lowest indices), while string-pad-right does so at the end of the string (highest indices).

          (string-pad-left "hello" 4)             =>  "ello"
          (string-pad-left "hello" 8)             =>  "   hello"
          (string-pad-left "hello" 8 #\*)         =>  "***hello"
          (string-pad-right "hello" 4)            =>  "hell"
          (string-pad-right "hello" 8)            =>  "hello   "
     
— procedure: string-trim string [char-set]
— procedure: string-trim-left string [char-set]
— procedure: string-trim-right string [char-set]

Returns a newly allocated string created by removing all characters that are not in char-set from: (string-trim) both ends of string; (string-trim-left) the beginning of string; or (string-trim-right) the end of string. Char-set defaults to char-set:not-whitespace.

          (string-trim "  in the end  ")          =>  "in the end"
          (string-trim "              ")          =>  ""
          (string-trim "100th" char-set:numeric)  =>  "100"
          (string-trim-left "-.-+-=-" (char-set #\+))
                                                  =>  "+-=-"
          (string-trim "but (+ x y) is" (char-set #\( #\)))
                                                  =>  "(+ x y)"