Module Stdlib.StringLabels
Contents
Instructions: Use this module in your project
In the IDE (CLion, Visual Studio Code, Xcode, etc.) you use for your DkSDK project:
Add the following to your project's
dependencies/CMakeLists.txt:DkSDKProject_DeclareAvailable(ocaml CONSTRAINT "= 4.14.0" FINDLIBS str unix runtime_events threads dynlink) DkSDKProject_MakeAvailable(ocaml)Add the
Findlib::ocamllibrary to any desired targets insrc/*/CMakeLists.txt:target_link_libraries(YourPackage_YourLibraryName # ... existing libraries, if any ... Findlib::ocaml)Click your IDE's
Buildbutton
Not using DkSDK?
FIRST, do one or all of the following:
Run:
opam install ocaml.4.14.0Edit your
dune-projectand add:(package (name YourExistingPackage) (depends ; ... existing dependenices ... (ocaml (>= 4.14.0))))Then run:
dune build *.opam # if this fails, run: dune buildEdit your
<package>.opamfile and add:depends: [ # ... existing dependencies ... "ocaml" {>= "4.14.0"} ]Then run:
opam install . --deps-only
FINALLY, add the library to any desired (library)and/or (executable) targets in your **/dune files:
(library
(name YourLibrary)
; ... existing library options ...
(libraries
; ... existing libraries ...
))
(executable
(name YourExecutable)
; ... existing executable options ...
(libraries
; ... existing libraries ...
))Strings
typet`` = string
The type for strings.
valmake : ``int->``char->string
make n c is a string of length n with each index holding the
character c.
-
raises Invalid_argument
if
n < 0orn >Sys.max_string_length.
valinit : ``int->``f:``(``int->char)``->string
init n ~f is a string of length n with index i holding the
character f i (called in increasing index order).
-
raises Invalid_argument
if
n < 0orn >Sys.max_string_length. -
since 4.02.0
valempty : string
The empty string.
- since 4.13.0
valof_bytes : ``bytes->string
Return a new string that contains the same bytes as the given byte sequence.
- since 4.13.0
valto_bytes : ``string->bytes
Return a new byte sequence that contains the same bytes as the given string.
- since 4.13.0
vallength : ``string->int
length s is the length (number of bytes/characters) of s.
valget : ``string->``int->char
get s i is the character at index i in s. This is the same as
writing s.[i].
-
raises Invalid_argument
if
inot an index ofs.
Concatenating
Note. The Stdlib.(^) binary operator
concatenates two strings.
valconcat : ``sep:string->``string list``->string
concat ~sep ss concatenates the list of strings ss, inserting the
separator string sep between each.
-
raises Invalid_argument
if the result is longer than
Sys.max_string_lengthbytes.
valcat : ``string->``string->string
cat s1 s2 concatenates s1 and s2 (s1 ^ s2).
-
raises Invalid_argument
if the result is longer then than
Sys.max_string_lengthbytes. -
since 4.13.0
Predicates and comparisons
equal s0 s1 is true if and only if s0 and s1 are character-wise
equal.
- since 4.05.0
compare s0 s1 sorts s0 and s1 in lexicographical order. compare
behaves like Stdlib.compare on strings but
may be more efficient.
valstarts_with : ``prefix:string->``string->bool
starts_with ``~``prefix s is true if and only if s starts with
prefix.
- since 4.13.0
valends_with : ``suffix:string->``string->bool
ends_with ~suffix s is true if and only if s ends with suffix.
- since 4.13.0
valcontains_from : ``string->``int->``char->bool
contains_from s start c is true if and only if c appears in s
after position start.
-
raises Invalid_argument
if
startis not a valid position ins.
valrcontains_from : ``string->``int->``char->bool
rcontains_from s stop c is true if and only if c appears in s
before position stop+1.
-
raises Invalid_argument
if
stop < 0orstop+1is not a valid position ins.
valcontains : ``string->``char->bool
contains s c is
String.contains_from s 0 c.
Extracting substrings
valsub : ``string->``pos:int->``len:int->string
sub s ~pos ~len is a string of length len, containing the substring
of s that starts at position pos and has length len.
-
raises Invalid_argument
if
posandlendo not designate a valid substring ofs.
valsplit_on_char : ``sep:char->``string->``string list
split_on_char ~sep s is the list of all (possibly empty) substrings of
s that are delimited by the character sep.
The function's result is specified by the following invariants:
-
The list is not empty.
-
Concatenating its elements using
sepas a separator returns a string equal to the input (concat (make 1 sep) (split_on_char sep s) = s). -
No string in the result contains the
sepcharacter. -
since 4.05.0
Transforming
valmap : ``f:``(``char->char)``->``string->string
map f s is the string resulting from applying f to all the
characters of s in increasing order.
- since 4.00.0
valmapi : ``f:``(``int->``char->char)``->``string->string
mapi ~f s is like map but the index of the character is
also passed to f.
- since 4.02.0
valfold_left : ``f:``('a->``char->'a)``->``init:'a->``string->'a
fold_left f x s computes f (... (f (f x s.[0]) s.[1]) ...) s.[n-1],
where n is the length of the string s.
- since 4.13.0
valfold_right : ``f:``(``char->'a->'a)``->``string->``init:'a->'a
fold_right f s x computes
f s.[0] (f s.[1] ( ... (f s.[n-1] x) ...)), where n is the length of
the string s.
- since 4.13.0
valfor_all : ``f:``(``char->bool)``->``string->bool
for_all p s checks if all characters in s satisfy the predicate p.
- since 4.13.0
valexists : ``f:``(``char->bool)``->``string->bool
exists p s checks if at least one character of s satisfies the
predicate p.
- since 4.13.0
valtrim : ``string->string
trim s is s without leading and trailing whitespace. Whitespace
characters are: ' ', '\x0C' (form feed), '\n', '\r', and '\t'.
- since 4.00.0
valescaped : ``string->string
escaped s is s with special characters represented by escape
sequences, following the lexical conventions of OCaml.
All characters outside the US-ASCII printable range [0x20;0x7E] are escaped, as well as backslash (0x2F) and double-quote (0x22).
The function Scanf.unescaped is a
left inverse of escaped, i.e. Scanf.unescaped (escaped s) = s for
any string s (unless escaped s fails).
-
raises Invalid_argument
if the result is longer than
Sys.max_string_lengthbytes.
valuppercase_ascii : ``string->string
uppercase_ascii s is s with all lowercase letters translated to
uppercase, using the US-ASCII character set.
- since 4.05.0
vallowercase_ascii : ``string->string
lowercase_ascii s is s with all uppercase letters translated to
lowercase, using the US-ASCII character set.
- since 4.05.0
valcapitalize_ascii : ``string->string
capitalize_ascii s is s with the first character set to uppercase,
using the US-ASCII character set.
- since 4.05.0
valuncapitalize_ascii : ``string->string
uncapitalize_ascii s is s with the first character set to lowercase,
using the US-ASCII character set.
- since 4.05.0
Traversing
valiter : ``f:``(``char->unit)``->``string->unit
iter ~f s applies function f in turn to all the characters of s.
It is equivalent to f s.[0]; f s.[1]; ...; f s.[length s - 1]; ().
valiteri : ``f:``(``int->``char->unit)``->``string->unit
iteri is like iter, but the function is also given the
corresponding character index.
- since 4.00.0
Searching
valindex_from : ``string->``int->``char->int
index_from s i c is the index of the first occurrence of c in s
after position i.
-
raises Not_found
if
cdoes not occur insafter positioni. -
raises Invalid_argument
if
iis not a valid position ins.
valindex_from_opt : ``string->``int->``char->``int option
index_from_opt s i c is the index of the first occurrence of c in
s after position i (if any).
-
raises Invalid_argument
if
iis not a valid position ins. -
since 4.05
valrindex_from : ``string->``int->``char->int
rindex_from s i c is the index of the last occurrence of c in s
before position i+1.
-
raises Not_found
if
cdoes not occur insbefore positioni+1. -
raises Invalid_argument
if
i+1is not a valid position ins.
valrindex_from_opt : ``string->``int->``char->``int option
rindex_from_opt s i c is the index of the last occurrence of c in
s before position i+1 (if any).
-
raises Invalid_argument
if
i+1is not a valid position ins. -
since 4.05
valindex : ``string->``char->int
index s c is
String.index_from s 0 c.
valindex_opt : ``string->``char->``int option
index_opt s c is
String.index_from_opt s 0 c.
- since 4.05
valrindex : ``string->``char->int
rindex s c is
String.rindex_from s (length s - 1) c.
valrindex_opt : ``string->``char->``int option
rindex_opt s c is
String.rindex_from_opt s (length s - 1) c.
- since 4.05
Strings and Sequences
to_seq s is a sequence made of the string's characters in increasing
order. In "unsafe-string" mode, modifications of the string during
iteration will be reflected in the sequence.
- since 4.07
to_seqi s is like to_seq but also tuples the
corresponding index.
- since 4.07
UTF decoding and validations
- since 4.14
UTF-8
valget_utf_8_uchar :t->``int->Uchar.utf_decode
get_utf_8_uchar b i decodes an UTF-8 character at index i in b.
valis_valid_utf_8 :t->bool
is_valid_utf_8 b is true if and only if b contains valid UTF-8
data.
UTF-16BE
valget_utf_16be_uchar :t->``int->Uchar.utf_decode
get_utf_16be_uchar b i decodes an UTF-16BE character at index i in
b.
valis_valid_utf_16be :t->bool
is_valid_utf_16be b is true if and only if b contains valid
UTF-16BE data.
UTF-16LE
valget_utf_16le_uchar :t->``int->Uchar.utf_decode
get_utf_16le_uchar b i decodes an UTF-16LE character at index i in
b.
valis_valid_utf_16le :t->bool
is_valid_utf_16le b is true if and only if b contains valid
UTF-16LE data.
Deprecated functions
valcreate : ``int->bytes
create n returns a fresh byte sequence of length n. The sequence is
uninitialized and contains arbitrary bytes.
-
raises Invalid_argument
if
n < 0orn >Sys.max_string_length. -
deprecated
This is a deprecated alias of
Bytes.create/BytesLabels.create.
valset : ``bytes->``int->``char->unit
set s n c modifies byte sequence s in place, replacing the byte at
index n with c. You can also write s.[n] <- c instead of
set s n c.
-
raises Invalid_argument
if
nis not a valid index ins. -
deprecated
This is a deprecated alias of
Bytes.set/BytesLabels.set.
valblit : ``src:string->``src_pos:int->``dst:bytes->``dst_pos:int->``len:int->unit
blit ~src ~src_pos ~dst ~dst_pos ~len copies len bytes from the
string src, starting at index src_pos, to byte sequence dst,
starting at character number dst_pos.
-
raises Invalid_argument
if
src_posandlendo not designate a valid range ofsrc, or ifdst_posandlendo not designate a valid range ofdst.
valcopy : ``string->string
Return a copy of the given string.
-
deprecated
Because strings are immutable, it doesn't make much sense to make identical copies of them.
valfill : ``bytes->``pos:int->``len:int->``char->unit
fill s ~pos ~len c modifies byte sequence s in place, replacing
len bytes by c, starting at pos.
-
raises Invalid_argument
if
posandlendo not designate a valid substring ofs. -
deprecated
This is a deprecated alias of
Bytes.fill/BytesLabels.fill.
valuppercase : ``string->string
Return a copy of the argument, with all lowercase letters translated to uppercase, including accented letters of the ISO Latin-1 (8859-1) character set.
-
deprecated
Functions operating on Latin-1 character set are deprecated.
vallowercase : ``string->string
Return a copy of the argument, with all uppercase letters translated to lowercase, including accented letters of the ISO Latin-1 (8859-1) character set.
-
deprecated
Functions operating on Latin-1 character set are deprecated.
valcapitalize : ``string->string
Return a copy of the argument, with the first character set to uppercase, using the ISO Latin-1 (8859-1) character set..
-
deprecated
Functions operating on Latin-1 character set are deprecated.
valuncapitalize : ``string->string
Return a copy of the argument, with the first character set to lowercase, using the ISO Latin-1 (8859-1) character set.
-
deprecated
Functions operating on Latin-1 character set are deprecated.
Binary decoding of integers
The functions in this section binary decode integers from strings.
All following functions raise Invalid_argument if the characters
needed at index i to decode the integer are not available.
Little-endian (resp. big-endian) encoding means that least (resp. most)
significant bytes are stored first. Big-endian is also known as network
byte order. Native-endian encoding is either little-endian or big-endian
depending on Sys.big_endian.
32-bit and 64-bit integers are represented by the int32 and int64
types, which can be interpreted either as signed or unsigned numbers.
8-bit and 16-bit integers are represented by the int type, which has
more bits than the binary encoding. These extra bits are sign-extended
(or zero-extended) for functions which decode 8-bit or 16-bit integers
and represented them with int values.
valget_uint8 : ``string->``int->int
get_uint8 b i is b's unsigned 8-bit integer starting at character
index i.
- since 4.13.0
valget_int8 : ``string->``int->int
get_int8 b i is b's signed 8-bit integer starting at character index
i.
- since 4.13.0
valget_uint16_ne : ``string->``int->int
get_uint16_ne b i is b's native-endian unsigned 16-bit integer
starting at character index i.
- since 4.13.0
valget_uint16_be : ``string->``int->int
get_uint16_be b i is b's big-endian unsigned 16-bit integer starting
at character index i.
- since 4.13.0
valget_uint16_le : ``string->``int->int
get_uint16_le b i is b's little-endian unsigned 16-bit integer
starting at character index i.
- since 4.13.0
valget_int16_ne : ``string->``int->int
get_int16_ne b i is b's native-endian signed 16-bit integer starting
at character index i.
- since 4.13.0
valget_int16_be : ``string->``int->int
get_int16_be b i is b's big-endian signed 16-bit integer starting at
character index i.
- since 4.13.0
valget_int16_le : ``string->``int->int
get_int16_le b i is b's little-endian signed 16-bit integer starting
at character index i.
- since 4.13.0
valget_int32_ne : ``string->``int->int32
get_int32_ne b i is b's native-endian 32-bit integer starting at
character index i.
- since 4.13.0
valget_int32_be : ``string->``int->int32
get_int32_be b i is b's big-endian 32-bit integer starting at
character index i.
- since 4.13.0
valget_int32_le : ``string->``int->int32
get_int32_le b i is b's little-endian 32-bit integer starting at
character index i.
- since 4.13.0
valget_int64_ne : ``string->``int->int64
get_int64_ne b i is b's native-endian 64-bit integer starting at
character index i.
- since 4.13.0
valget_int64_be : ``string->``int->int64
get_int64_be b i is b's big-endian 64-bit integer starting at
character index i.
- since 4.13.0
valget_int64_le : ``string->``int->int64
get_int64_le b i is b's little-endian 64-bit integer starting at
character index i.
- since 4.13.0
</stdlib.html#val-(%5e)>
