Next: Matching Strings, Previous: Cutting and Pasting Strings, Up: Strings
The first few procedures in this section perform string search, in which a given string (the text) is searched to see if it contains another given string (the pattern) as a proper substring. At present these procedures are implemented using a hybrid strategy. For short patterns of less than 4 characters, the naive string-search algorithm is used. For longer patterns, the Boyer-Moore string-search algorithm is used.
Pattern must be a string. Searches string for the leftmost occurrence of the substring pattern. If successful, the index of the first character of the matched substring is returned; otherwise,
#f
is returned.
substring-search-forward
limits its search to the specified substring of string;string-search-forward
searches all of string.(string-search-forward "rat" "pirate") => 2 (string-search-forward "rat" "pirate rating") => 2 (substring-search-forward "rat" "pirate rating" 4 13) => 7 (substring-search-forward "rat" "pirate rating" 9 13) => #f
Pattern must be a string. Searches string for the rightmost occurrence of the substring pattern. If successful, the index to the right of the last character of the matched substring is returned; otherwise,
#f
is returned.
substring-search-backward
limits its search to the specified substring of string;string-search-backward
searches all of string.(string-search-backward "rat" "pirate") => 5 (string-search-backward "rat" "pirate rating") => 10 (substring-search-backward "rat" "pirate rating" 1 8) => 5 (substring-search-backward "rat" "pirate rating" 9 13) => #f
Pattern must be a string. Searches string to find all occurrences of the substring pattern. Returns a list of the occurrences; each element of the list is an index pointing to the first character of an occurrence.
substring-search-all
limits its search to the specified substring of string;string-search-all
searches all of string.(string-search-all "rat" "pirate") => (2) (string-search-all "rat" "pirate rating") => (2 7) (substring-search-all "rat" "pirate rating" 4 13) => (7) (substring-search-all "rat" "pirate rating" 9 13) => ()
Pattern must be a string. Searches string to see if it contains the substring pattern. Returns
#t
if pattern is a substring of string, otherwise returns#f
.(substring? "rat" "pirate") => #t (substring? "rat" "outrage") => #f (substring? "" any-string) => #t (if (substring? "moon" text) (process-lunar text) 'no-moon)
Returns the index of the first occurrence of char in the string (substring); returns
#f
if char does not appear in the string. For the substring procedures, the index returned is relative to the entire string, not just the substring. The-ci
procedures don't distinguish uppercase and lowercase letters.(string-find-next-char "Adam" #\A) => 0 (substring-find-next-char "Adam" 1 4 #\A) => #f (substring-find-next-char-ci "Adam" 1 4 #\A) => 2
Returns the index of the first character in the string (or substring) that is also in char-set, or returns
#f
if none of the characters in char-set occur in string. For the substring procedure, only the substring is searched, but the index returned is relative to the entire string, not just the substring.(string-find-next-char-in-set my-string char-set:alphabetic) => start position of the first word in my-string ; Can be used as a predicate: (if (string-find-next-char-in-set my-string (char-set #\( #\) )) 'contains-parentheses 'no-parentheses)
Returns the index of the last occurrence of char in the string (substring); returns
#f
if char doesn't appear in the string. For the substring procedures, the index returned is relative to the entire string, not just the substring. The-ci
procedures don't distinguish uppercase and lowercase letters.
Returns the index of the last character in the string (substring) that is also in char-set. For the substring procedure, the index returned is relative to the entire string, not just the substring.