Previous topic  Top  Next topic  Print this Topic
 

String Handling

 

Analogously to numbers, there are several predefined operations for strings. These built-in predicates all have a fixed arity and (as for all built-in predicates) must not be used in the head of rule.

_isTypeOf(_string, <arg>)

is true, if <arg> is a string.

_concat(<string 1> , <string 2> , <string 3>)

succeeds if <string 3> is the concatenation of <string 1> and <string 2>, e.g.,

?- _concat("a","b",?X).

returns the binding ?X = "ab" whereas

?- _concat("a",?Y,"ab").

leads to ?Y = "b"

_cut(<string>,<n>,<variable>)

cuts the last n characters from <string>

_tokenize(<string>,<delimiters>,<variable>)

breaks the string into tokens at the delimiters

_tokenizen(<string>, <n>,<delimiters>,<variable>)

breaks the string into maximal n tokens at the delimiter

_tolower(<string>,<variable>)

transforms all characters into lower characters

_toupper(<string>,<variable>)

transforms all characters into upper characters

_regexp("<regular expression>",<string1>,<string2>)

Regular expressions may be used to search in strings with this predicate. The first parameter defines the search string as aregular expression. Regular expressions are defined as PERL regular expressions. The second parameter defines the string to search in, and the last parameter defines the resulting string, i.e. the region that matched the pattern, e.g.

married("peter").

married("tom").

married("mary").

The query "search for all married people with a "p" or "t" in their name":

?- married(?X) and _regexp("[pt]",?X,?Y).

delivers

?X = "peter", ?Y = "p"

?X = "peter", ?Y = "t"

?X = "tom", ?Y="t"