[ Strings and Atoms | Reference Manual | Alphabetic Index ]
string_char(?Index, +String, ?Char)
Succeeds if Char is the value of the Index'th character in String
- Index
- Variable or integer between 1 and the length of String
- String
- String
- Char
- Variable or single-character atom
Description
This predicate maps the index position Index to the corresponding
character in the given string String. Characters in the string
are numbered from 1 (analogous to array indices in subscript/3
and arg/3). Index positions of zero or greater than the string length
lead to failure.
The predicate may be used to extract the Index'th character, to find
the position(s) of a particular character, or to enumerate all
positions and characters in the string.
Modes and Determinism
- string_char(+, +, -) is det
- string_char(-, +, +) is nondet
- string_char(-, +, -) is nondet
Fail Conditions
Fails if character Char does not occur in String
Exceptions
- (4) instantiation fault
- String is uninstantated
- (5) type error
- String is instantiated, but not a string
- (24) number expected
- Index is instantiated, but not an integer
- (5) type error
- Char is instantiated, but not an atom
- (6) out of range
- Index is a negative integer
- (6) out of range
- Char is a non-characte atom
Examples
string_char(1, "abc", a). % succeeds
string_char(3, "abc", C). % gives C = c
string_char(I, "abc", c). % gives I = 3
string_char(I, "abcb", b). % gives I = 2 ; I = 4 on backtracking
string_char(I, "ab", C). % gives I=1,C=a ; I=2,C=b on backtracking
string_char(2, "abc", d). % fails
string_char(I, "abc", d). % fails
string_char(0, "abc", C). % fails
string_char(4, "abc", C). % fails
string_char(I, "", C). % fails
string_char(1, S, c). % Error 4
string_char(1, abc, C). % Error 5
string_char(1.5, "abc", C). % Error 5
string_char(I, "abc", 0'b). % Error 5
string_char(-1, "abc", C). % Error 6
string_char(I, "abc", bb). % Error 6
See Also
string_code / 3, string_chars / 2, string_list / 2, char_code / 2