Cutting and Pasting Strings - MIT/GNU Scheme 7.7.90+
Description: MIT/GNU Scheme 7.7.90+

Next: Searching Strings, 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)"