
string_char(?Index, +String, ?Char)

   Succeeds if Char is the value of the Index'th character in String

Arguments
   Index               Variable or integer between 1 and the length of String
   String              String
   Char                Variable or single-character atom

Type
   Strings and Atoms

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 --- String is uninstantated
     5 --- String is instantiated, but not a string
    24 --- Index is instantiated, but not an integer
     5 --- Char is instantiated, but not an atom
     6 --- Index is a negative integer
     6 --- 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
