mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
7 lines
No EOL
95 KiB
HTML
7 lines
No EOL
95 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCString (containers.CCString)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">containers</a> » CCString</nav><header class="odoc-preamble"><h1>Module <code><span>CCString</span></code></h1><p>Basic String Utils</p></header><nav class="odoc-toc"><ul><li><a href="#strings">Strings</a></li><li><a href="#concat">Concatenating</a></li><li><a href="#predicates">Predicates and comparisons</a></li><li><a href="#extract">Extracting substrings</a></li><li><a href="#transforming">Transforming</a></li><li><a href="#traversing">Traversing</a></li><li><a href="#searching">Searching</a></li><li><a href="#strings-and-sequences">Strings and Sequences</a></li><li><a href="#utf">UTF decoding and validations</a><ul><li><a href="#utf_8">UTF-8</a></li><li><a href="#utf_16be">UTF-16BE</a></li><li><a href="#utf_16le">UTF-16LE</a></li></ul></li><li><a href="#deprecated">Deprecated functions</a></li><li><a href="#binary-decoding-of-integers">Binary decoding of integers</a><ul><li><a href="#conversions">Conversions</a></li><li><a href="#operations-on-2-strings">Operations on 2 strings</a></li><li><a href="#ascii-functions">Ascii functions</a></li><li><a href="#finding">Finding</a></li><li><a href="#splitting">Splitting</a></li><li><a href="#utils">Utils</a></li><li><a href="#infix-operators">Infix operators</a></li></ul></li></ul></nav><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-iter"><a href="#type-iter" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a iter</span></span><span> = <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Fast internal iterator.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.8</li></ul></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-gen"><a href="#type-gen" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a gen</span></span><span> = <span>unit <span class="arrow">-></span></span> <span><span class="type-var">'a</span> option</span></span></code></div></div><h2 id="strings"><a href="#strings" class="anchor"></a>Strings</h2><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = string</span></code></div><div class="spec-doc"><p>The type for strings.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-make"><a href="#val-make" class="anchor"></a><code><span><span class="keyword">val</span> make : <span>int <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>make n c</code> is a string of length <code>n</code> with each index holding the character <code>c</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>n < 0</code> or <code>n > </code><code>Sys</code>.max_string_length.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-init"><a href="#val-init" class="anchor"></a><code><span><span class="keyword">val</span> init : <span>int <span class="arrow">-></span></span> <span><span>(<span>int <span class="arrow">-></span></span> char)</span> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>init n f</code> is a string of length <code>n</code> with index <code>i</code> holding the character <code>f i</code> (called in increasing index order).</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>n < 0</code> or <code>n > </code><code>Sys</code>.max_string_length.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.02.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span><span class="keyword">val</span> empty : string</span></code></div><div class="spec-doc"><p>The empty string.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_bytes"><a href="#val-of_bytes" class="anchor"></a><code><span><span class="keyword">val</span> of_bytes : <span>bytes <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>Return a new string that contains the same bytes as the given byte sequence.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_bytes"><a href="#val-to_bytes" class="anchor"></a><code><span><span class="keyword">val</span> to_bytes : <span>string <span class="arrow">-></span></span> bytes</span></code></div><div class="spec-doc"><p>Return a new byte sequence that contains the same bytes as the given string.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value external anchored" id="val-get"><a href="#val-get" class="anchor"></a><code><span><span class="keyword">val</span> get : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> char</span></code></div><div class="spec-doc"><p><code>get s i</code> is the character at index <code>i</code> in <code>s</code>. This is the same as writing <code>s.[i]</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>i</code> not an index of <code>s</code>.</p></li></ul></div></div><h2 id="concat"><a href="#concat" class="anchor"></a>Concatenating</h2><p><b>Note.</b> The <a href="../../ocaml/Stdlib/index.html#val-(^)"><code>Stdlib.(^)</code></a> binary operator concatenates two strings.</p><div class="odoc-spec"><div class="spec value anchored" id="val-concat"><a href="#val-concat" class="anchor"></a><code><span><span class="keyword">val</span> concat : <span>string <span class="arrow">-></span></span> <span><span>string list</span> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>concat sep ss</code> concatenates the list of strings <code>ss</code>, inserting the separator string <code>sep</code> between each.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the result is longer than <code>Sys</code>.max_string_length bytes.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-cat"><a href="#val-cat" class="anchor"></a><code><span><span class="keyword">val</span> cat : <span>string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>cat s1 s2</code> concatenates s1 and s2 (<code>s1 ^ s2</code>).</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the result is longer than <code>Sys</code>.max_string_length bytes.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><h2 id="predicates"><a href="#predicates" class="anchor"></a>Predicates and comparisons</h2><div class="odoc-spec"><div class="spec value anchored" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span><span class="keyword">val</span> equal : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>equal s0 s1</code> is <code>true</code> if and only if <code>s0</code> and <code>s1</code> are character-wise equal.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03.0 (4.05.0 in StringLabels)</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-starts_with"><a href="#val-starts_with" class="anchor"></a><code><span><span class="keyword">val</span> starts_with : <span>prefix:string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>starts_with </code><code>~prefix s</code> is <code>true</code> if and only if <code>s</code> starts with <code>prefix</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ends_with"><a href="#val-ends_with" class="anchor"></a><code><span><span class="keyword">val</span> ends_with : <span>suffix:string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>ends_with </code><code>~suffix s</code> is <code>true</code> if and only if <code>s</code> ends with <code>suffix</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-contains_from"><a href="#val-contains_from" class="anchor"></a><code><span><span class="keyword">val</span> contains_from : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>contains_from s start c</code> is <code>true</code> if and only if <code>c</code> appears in <code>s</code> after position <code>start</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>start</code> is not a valid position in <code>s</code>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-rcontains_from"><a href="#val-rcontains_from" class="anchor"></a><code><span><span class="keyword">val</span> rcontains_from : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>rcontains_from s stop c</code> is <code>true</code> if and only if <code>c</code> appears in <code>s</code> before position <code>stop+1</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>stop < 0</code> or <code>stop+1</code> is not a valid position in <code>s</code>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-contains"><a href="#val-contains" class="anchor"></a><code><span><span class="keyword">val</span> contains : <span>string <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>contains s c</code> is <code>String</code>.contains_from<code> s 0 c</code>.</p></div></div><h2 id="extract"><a href="#extract" class="anchor"></a>Extracting substrings</h2><div class="odoc-spec"><div class="spec value anchored" id="val-sub"><a href="#val-sub" class="anchor"></a><code><span><span class="keyword">val</span> sub : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>sub s pos len</code> is a string of length <code>len</code>, containing the substring of <code>s</code> that starts at position <code>pos</code> and has length <code>len</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>pos</code> and <code>len</code> do not designate a valid substring of <code>s</code>.</p></li></ul></div></div><h2 id="transforming"><a href="#transforming" class="anchor"></a>Transforming</h2><div class="odoc-spec"><div class="spec value anchored" id="val-map"><a href="#val-map" class="anchor"></a><code><span><span class="keyword">val</span> map : <span><span>(<span>char <span class="arrow">-></span></span> char)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>map f s</code> is the string resulting from applying <code>f</code> to all the characters of <code>s</code> in increasing order.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.00.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-mapi"><a href="#val-mapi" class="anchor"></a><code><span><span class="keyword">val</span> mapi : <span><span>(<span>int <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> char)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>mapi f s</code> is like <a href="#val-map"><code>map</code></a> but the index of the character is also passed to <code>f</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.02.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fold_left"><a href="#val-fold_left" class="anchor"></a><code><span><span class="keyword">val</span> fold_left : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>fold_left f x s</code> computes <code>f (... (f (f x s.[0]) s.[1]) ...) s.[n-1]</code>, where <code>n</code> is the length of the string <code>s</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fold_right"><a href="#val-fold_right" class="anchor"></a><code><span><span class="keyword">val</span> fold_right : <span><span>(<span>char <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>fold_right f s x</code> computes <code>f s.[0] (f s.[1] ( ... (f s.[n-1] x) ...))</code>, where <code>n</code> is the length of the string <code>s</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-trim"><a href="#val-trim" class="anchor"></a><code><span><span class="keyword">val</span> trim : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>trim s</code> is <code>s</code> without leading and trailing whitespace. Whitespace characters are: <code>' '</code>, <code>'\x0C'</code> (form feed), <code>'\n'</code>, <code>'\r'</code>, and <code>'\t'</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.00.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-escaped"><a href="#val-escaped" class="anchor"></a><code><span><span class="keyword">val</span> escaped : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>escaped s</code> is <code>s</code> with special characters represented by escape sequences, following the lexical conventions of OCaml.</p><p>All characters outside the US-ASCII printable range [0x20;0x7E] are escaped, as well as backslash (0x2F) and double-quote (0x22).</p><p>The function <code>Scanf</code>.unescaped is a left inverse of <code>escaped</code>, i.e. <code>Scanf.unescaped (escaped s) = s</code> for any string <code>s</code> (unless <code>escaped s</code> fails).</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the result is longer than <code>Sys</code>.max_string_length bytes.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-uppercase_ascii"><a href="#val-uppercase_ascii" class="anchor"></a><code><span><span class="keyword">val</span> uppercase_ascii : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>uppercase_ascii s</code> is <code>s</code> with all lowercase letters translated to uppercase, using the US-ASCII character set.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03.0 (4.05.0 in StringLabels)</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-lowercase_ascii"><a href="#val-lowercase_ascii" class="anchor"></a><code><span><span class="keyword">val</span> lowercase_ascii : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>lowercase_ascii s</code> is <code>s</code> with all uppercase letters translated to lowercase, using the US-ASCII character set.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03.0 (4.05.0 in StringLabels)</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-capitalize_ascii"><a href="#val-capitalize_ascii" class="anchor"></a><code><span><span class="keyword">val</span> capitalize_ascii : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>capitalize_ascii s</code> is <code>s</code> with the first character set to uppercase, using the US-ASCII character set.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03.0 (4.05.0 in StringLabels)</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-uncapitalize_ascii"><a href="#val-uncapitalize_ascii" class="anchor"></a><code><span><span class="keyword">val</span> uncapitalize_ascii : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>uncapitalize_ascii s</code> is <code>s</code> with the first character set to lowercase, using the US-ASCII character set.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.03.0 (4.05.0 in StringLabels)</li></ul></div></div><h2 id="traversing"><a href="#traversing" class="anchor"></a>Traversing</h2><div class="odoc-spec"><div class="spec value anchored" id="val-iteri"><a href="#val-iteri" class="anchor"></a><code><span><span class="keyword">val</span> iteri : <span><span>(<span>int <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>iteri</code> is like <a href="#val-iter"><code>iter</code></a>, but the function is also given the corresponding character index.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.00.0</li></ul></div></div><h2 id="searching"><a href="#searching" class="anchor"></a>Searching</h2><div class="odoc-spec"><div class="spec value anchored" id="val-index_from"><a href="#val-index_from" class="anchor"></a><code><span><span class="keyword">val</span> index_from : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>index_from s i c</code> is the index of the first occurrence of <code>c</code> in <code>s</code> after position <code>i</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Not_found</span> <p>if <code>c</code> does not occur in <code>s</code> after position <code>i</code>.</p></li></ul><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>i</code> is not a valid position in <code>s</code>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-index_from_opt"><a href="#val-index_from_opt" class="anchor"></a><code><span><span class="keyword">val</span> index_from_opt : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> <span>int option</span></span></code></div><div class="spec-doc"><p><code>index_from_opt s i c</code> is the index of the first occurrence of <code>c</code> in <code>s</code> after position <code>i</code> (if any).</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>i</code> is not a valid position in <code>s</code>.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.05</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-rindex_from"><a href="#val-rindex_from" class="anchor"></a><code><span><span class="keyword">val</span> rindex_from : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>rindex_from s i c</code> is the index of the last occurrence of <code>c</code> in <code>s</code> before position <code>i+1</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Not_found</span> <p>if <code>c</code> does not occur in <code>s</code> before position <code>i+1</code>.</p></li></ul><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>i+1</code> is not a valid position in <code>s</code>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-rindex_from_opt"><a href="#val-rindex_from_opt" class="anchor"></a><code><span><span class="keyword">val</span> rindex_from_opt : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> <span>int option</span></span></code></div><div class="spec-doc"><p><code>rindex_from_opt s i c</code> is the index of the last occurrence of <code>c</code> in <code>s</code> before position <code>i+1</code> (if any).</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>i+1</code> is not a valid position in <code>s</code>.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.05</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-index"><a href="#val-index" class="anchor"></a><code><span><span class="keyword">val</span> index : <span>string <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>index s c</code> is <code>String</code>.index_from<code> s 0 c</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-index_opt"><a href="#val-index_opt" class="anchor"></a><code><span><span class="keyword">val</span> index_opt : <span>string <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> <span>int option</span></span></code></div><div class="spec-doc"><p><code>index_opt s c</code> is <code>String</code>.index_from_opt<code> s 0 c</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.05</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-rindex"><a href="#val-rindex" class="anchor"></a><code><span><span class="keyword">val</span> rindex : <span>string <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>rindex s c</code> is <code>String</code>.rindex_from<code> s (length s - 1) c</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-rindex_opt"><a href="#val-rindex_opt" class="anchor"></a><code><span><span class="keyword">val</span> rindex_opt : <span>string <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> <span>int option</span></span></code></div><div class="spec-doc"><p><code>rindex_opt s c</code> is <code>String</code>.rindex_from_opt<code> s (length s - 1) c</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.05</li></ul></div></div><h2 id="strings-and-sequences"><a href="#strings-and-sequences" class="anchor"></a>Strings and Sequences</h2><div class="odoc-spec"><div class="spec value anchored" id="val-to_seqi"><a href="#val-to_seqi" class="anchor"></a><code><span><span class="keyword">val</span> to_seqi : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><span>(int * char)</span> <a href="../../ocaml/Stdlib/Seq/index.html#type-t">Stdlib.Seq.t</a></span></span></code></div><div class="spec-doc"><p><code>to_seqi s</code> is like <a href="#val-to_seq"><code>to_seq</code></a> but also tuples the corresponding index.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.07</li></ul></div></div><h2 id="utf"><a href="#utf" class="anchor"></a>UTF decoding and validations</h2><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.14</li></ul><h3 id="utf_8"><a href="#utf_8" class="anchor"></a>UTF-8</h3><div class="odoc-spec"><div class="spec value anchored" id="val-get_utf_8_uchar"><a href="#val-get_utf_8_uchar" class="anchor"></a><code><span><span class="keyword">val</span> get_utf_8_uchar : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <a href="../../ocaml/Stdlib/Uchar/index.html#type-utf_decode">Stdlib.Uchar.utf_decode</a></span></code></div><div class="spec-doc"><p><code>get_utf_8_uchar b i</code> decodes an UTF-8 character at index <code>i</code> in <code>b</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_valid_utf_8"><a href="#val-is_valid_utf_8" class="anchor"></a><code><span><span class="keyword">val</span> is_valid_utf_8 : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>is_valid_utf_8 b</code> is <code>true</code> if and only if <code>b</code> contains valid UTF-8 data.</p></div></div><h3 id="utf_16be"><a href="#utf_16be" class="anchor"></a>UTF-16BE</h3><div class="odoc-spec"><div class="spec value anchored" id="val-get_utf_16be_uchar"><a href="#val-get_utf_16be_uchar" class="anchor"></a><code><span><span class="keyword">val</span> get_utf_16be_uchar : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <a href="../../ocaml/Stdlib/Uchar/index.html#type-utf_decode">Stdlib.Uchar.utf_decode</a></span></code></div><div class="spec-doc"><p><code>get_utf_16be_uchar b i</code> decodes an UTF-16BE character at index <code>i</code> in <code>b</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_valid_utf_16be"><a href="#val-is_valid_utf_16be" class="anchor"></a><code><span><span class="keyword">val</span> is_valid_utf_16be : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>is_valid_utf_16be b</code> is <code>true</code> if and only if <code>b</code> contains valid UTF-16BE data.</p></div></div><h3 id="utf_16le"><a href="#utf_16le" class="anchor"></a>UTF-16LE</h3><div class="odoc-spec"><div class="spec value anchored" id="val-get_utf_16le_uchar"><a href="#val-get_utf_16le_uchar" class="anchor"></a><code><span><span class="keyword">val</span> get_utf_16le_uchar : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <a href="../../ocaml/Stdlib/Uchar/index.html#type-utf_decode">Stdlib.Uchar.utf_decode</a></span></code></div><div class="spec-doc"><p><code>get_utf_16le_uchar b i</code> decodes an UTF-16LE character at index <code>i</code> in <code>b</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_valid_utf_16le"><a href="#val-is_valid_utf_16le" class="anchor"></a><code><span><span class="keyword">val</span> is_valid_utf_16le : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>is_valid_utf_16le b</code> is <code>true</code> if and only if <code>b</code> contains valid UTF-16LE data.</p></div></div><h2 id="deprecated"><a href="#deprecated" class="anchor"></a>Deprecated functions</h2><div class="odoc-spec"><div class="spec value external anchored" id="val-create"><a href="#val-create" class="anchor"></a><code><span><span class="keyword">val</span> create : <span>int <span class="arrow">-></span></span> bytes</span></code></div><div class="spec-doc"><p><code>create n</code> returns a fresh byte sequence of length <code>n</code>. The sequence is uninitialized and contains arbitrary bytes.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>n < 0</code> or <code>n > </code><code>Sys</code>.max_string_length.</p></li></ul><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>This is a deprecated alias of <code>Bytes</code>.create/<code>BytesLabels</code>.create.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-copy"><a href="#val-copy" class="anchor"></a><code><span><span class="keyword">val</span> copy : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>Return a copy of the given string.</p><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>Because strings are immutable, it doesn't make much sense to make identical copies of them.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fill"><a href="#val-fill" class="anchor"></a><code><span><span class="keyword">val</span> fill : <span>bytes <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>fill s pos len c</code> modifies byte sequence <code>s</code> in place, replacing <code>len</code> bytes by <code>c</code>, starting at <code>pos</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>pos</code> and <code>len</code> do not designate a valid substring of <code>s</code>.</p></li></ul><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>This is a deprecated alias of <code>Bytes</code>.fill/<code>BytesLabels</code>.fill.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-uppercase"><a href="#val-uppercase" class="anchor"></a><code><span><span class="keyword">val</span> uppercase : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>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.</p><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>Functions operating on Latin-1 character set are deprecated.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-lowercase"><a href="#val-lowercase" class="anchor"></a><code><span><span class="keyword">val</span> lowercase : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>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.</p><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>Functions operating on Latin-1 character set are deprecated.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-capitalize"><a href="#val-capitalize" class="anchor"></a><code><span><span class="keyword">val</span> capitalize : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>Return a copy of the argument, with the first character set to uppercase, using the ISO Latin-1 (8859-1) character set..</p><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>Functions operating on Latin-1 character set are deprecated.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-uncapitalize"><a href="#val-uncapitalize" class="anchor"></a><code><span><span class="keyword">val</span> uncapitalize : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>Return a copy of the argument, with the first character set to lowercase, using the ISO Latin-1 (8859-1) character set.</p><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>Functions operating on Latin-1 character set are deprecated.</p></li></ul></div></div><h2 id="binary-decoding-of-integers"><a href="#binary-decoding-of-integers" class="anchor"></a>Binary decoding of integers</h2><p>The functions in this section binary decode integers from strings.</p><p>All following functions raise <code>Invalid_argument</code> if the characters needed at index <code>i</code> to decode the integer are not available.</p><p>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 <code>Sys</code>.big_endian.</p><p>32-bit and 64-bit integers are represented by the <code>int32</code> and <code>int64</code> types, which can be interpreted either as signed or unsigned numbers.</p><p>8-bit and 16-bit integers are represented by the <code>int</code> 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 <code>int</code> values.</p><div class="odoc-spec"><div class="spec value anchored" id="val-get_uint8"><a href="#val-get_uint8" class="anchor"></a><code><span><span class="keyword">val</span> get_uint8 : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>get_uint8 b i</code> is <code>b</code>'s unsigned 8-bit integer starting at character index <code>i</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_int8"><a href="#val-get_int8" class="anchor"></a><code><span><span class="keyword">val</span> get_int8 : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>get_int8 b i</code> is <code>b</code>'s signed 8-bit integer starting at character index <code>i</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_uint16_ne"><a href="#val-get_uint16_ne" class="anchor"></a><code><span><span class="keyword">val</span> get_uint16_ne : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>get_uint16_ne b i</code> is <code>b</code>'s native-endian unsigned 16-bit integer starting at character index <code>i</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_uint16_be"><a href="#val-get_uint16_be" class="anchor"></a><code><span><span class="keyword">val</span> get_uint16_be : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>get_uint16_be b i</code> is <code>b</code>'s big-endian unsigned 16-bit integer starting at character index <code>i</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_uint16_le"><a href="#val-get_uint16_le" class="anchor"></a><code><span><span class="keyword">val</span> get_uint16_le : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>get_uint16_le b i</code> is <code>b</code>'s little-endian unsigned 16-bit integer starting at character index <code>i</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_int16_ne"><a href="#val-get_int16_ne" class="anchor"></a><code><span><span class="keyword">val</span> get_int16_ne : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>get_int16_ne b i</code> is <code>b</code>'s native-endian signed 16-bit integer starting at character index <code>i</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_int16_be"><a href="#val-get_int16_be" class="anchor"></a><code><span><span class="keyword">val</span> get_int16_be : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>get_int16_be b i</code> is <code>b</code>'s big-endian signed 16-bit integer starting at character index <code>i</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_int16_le"><a href="#val-get_int16_le" class="anchor"></a><code><span><span class="keyword">val</span> get_int16_le : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>get_int16_le b i</code> is <code>b</code>'s little-endian signed 16-bit integer starting at character index <code>i</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_int32_ne"><a href="#val-get_int32_ne" class="anchor"></a><code><span><span class="keyword">val</span> get_int32_ne : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int32</span></code></div><div class="spec-doc"><p><code>get_int32_ne b i</code> is <code>b</code>'s native-endian 32-bit integer starting at character index <code>i</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_int32_be"><a href="#val-get_int32_be" class="anchor"></a><code><span><span class="keyword">val</span> get_int32_be : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int32</span></code></div><div class="spec-doc"><p><code>get_int32_be b i</code> is <code>b</code>'s big-endian 32-bit integer starting at character index <code>i</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_int32_le"><a href="#val-get_int32_le" class="anchor"></a><code><span><span class="keyword">val</span> get_int32_le : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int32</span></code></div><div class="spec-doc"><p><code>get_int32_le b i</code> is <code>b</code>'s little-endian 32-bit integer starting at character index <code>i</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_int64_ne"><a href="#val-get_int64_ne" class="anchor"></a><code><span><span class="keyword">val</span> get_int64_ne : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int64</span></code></div><div class="spec-doc"><p><code>get_int64_ne b i</code> is <code>b</code>'s native-endian 64-bit integer starting at character index <code>i</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_int64_be"><a href="#val-get_int64_be" class="anchor"></a><code><span><span class="keyword">val</span> get_int64_be : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int64</span></code></div><div class="spec-doc"><p><code>get_int64_be b i</code> is <code>b</code>'s big-endian 64-bit integer starting at character index <code>i</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_int64_le"><a href="#val-get_int64_le" class="anchor"></a><code><span><span class="keyword">val</span> get_int64_le : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int64</span></code></div><div class="spec-doc"><p><code>get_int64_le b i</code> is <code>b</code>'s little-endian 64-bit integer starting at character index <code>i</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 4.13.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-length"><a href="#val-length" class="anchor"></a><code><span><span class="keyword">val</span> length : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>length s</code> returns the length (number of characters) of the given string <code>s</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-blit"><a href="#val-blit" class="anchor"></a><code><span><span class="keyword">val</span> blit : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span><a href="../../ocaml/Stdlib/Bytes/index.html#type-t">Stdlib.Bytes.t</a> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>blit src src_pos dst dst_pos len</code> copies <code>len</code> characters from string <code>src</code> starting at character indice <code>src_pos</code>, to the Bytes sequence <code>dst</code> starting at character indice <code>dst_pos</code>. Like <code>String</code>.blit. Compatible with the <code>-safe-string</code> option.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if indices are not valid.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fold"><a href="#val-fold" class="anchor"></a><code><span><span class="keyword">val</span> fold : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>fold f init s</code> folds on chars by increasing index. Computes <code>f(… (f (f init s.[0]) s.[1]) …) s.[n-1]</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.7</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-foldi"><a href="#val-foldi" class="anchor"></a><code><span><span class="keyword">val</span> foldi : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>foldi f init s</code> is just like <a href="#val-fold"><code>fold</code></a>, but it also passes in the index of each chars as second argument to the folded function <code>f</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.3</li></ul></div></div><h3 id="conversions"><a href="#conversions" class="anchor"></a>Conversions</h3><div class="odoc-spec"><div class="spec value anchored" id="val-to_gen"><a href="#val-to_gen" class="anchor"></a><code><span><span class="keyword">val</span> to_gen : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>char <a href="#type-gen">gen</a></span></span></code></div><div class="spec-doc"><p><code>to_gen s</code> returns the <code>gen</code> of characters contained in the string <code>s</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_iter"><a href="#val-to_iter" class="anchor"></a><code><span><span class="keyword">val</span> to_iter : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>char <a href="#type-iter">iter</a></span></span></code></div><div class="spec-doc"><p><code>to_iter s</code> returns the <code>iter</code> of characters contained in the string <code>s</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.8</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_seq"><a href="#val-to_seq" class="anchor"></a><code><span><span class="keyword">val</span> to_seq : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>char <a href="../../ocaml/Stdlib/Seq/index.html#type-t">Stdlib.Seq.t</a></span></span></code></div><div class="spec-doc"><p><code>to_seq s</code> returns the <code>Seq.t</code> of characters contained in the string <code>s</code>. Renamed from <code>to std_seq</code> since 3.0.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_list"><a href="#val-to_list" class="anchor"></a><code><span><span class="keyword">val</span> to_list : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>char list</span></span></code></div><div class="spec-doc"><p><code>to_list s</code> returns the <code>list</code> of characters contained in the string <code>s</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pp_buf"><a href="#val-pp_buf" class="anchor"></a><code><span><span class="keyword">val</span> pp_buf : <span><a href="../../ocaml/Stdlib/Buffer/index.html#type-t">Stdlib.Buffer.t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>pp_buf buf s</code> prints <code>s</code> to the buffer <code>buf</code>. Renamed from <code>pp</code> since 2.0.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span><span class="keyword">val</span> pp : <span><a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>pp f s</code> prints the string <code>s</code> within quotes to the formatter <code>f</code>. Renamed from <code>print</code> since 2.0.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span><span class="keyword">val</span> compare : <span>string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>compare s1 s2</code> compares the strings <code>s1</code> and <code>s2</code> and returns an integer that indicates their relative position in the sort order.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_empty"><a href="#val-is_empty" class="anchor"></a><code><span><span class="keyword">val</span> is_empty : <span>string <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>is_empty s</code> returns <code>true</code> iff <code>s</code> is empty (i.e. its length is 0).</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.5</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span><span class="keyword">val</span> hash : <span>string <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>hash s</code> returns the hash value of <code>s</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-rev"><a href="#val-rev" class="anchor"></a><code><span><span class="keyword">val</span> rev : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>rev s</code> returns the reverse of <code>s</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.17</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pad"><a href="#val-pad" class="anchor"></a><code><span><span class="keyword">val</span> pad : <span>?side:<span>[ `Left <span>| `Right</span> ]</span> <span class="arrow">-></span></span> <span>?c:char <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>pad ~side ~c n s</code> ensures that the string <code>s</code> is at least <code>n</code> bytes long, and pads it on the <code>side</code> with <code>c</code> if it's not the case.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">side</span> <p>determines where padding occurs (default: <code>`Left</code>).</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">c</span> <p>the char used to pad (default: ' ').</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.17</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_char"><a href="#val-of_char" class="anchor"></a><code><span><span class="keyword">val</span> of_char : <span>char <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>of_char 'a'</code> is <code>"a"</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.19</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_gen"><a href="#val-of_gen" class="anchor"></a><code><span><span class="keyword">val</span> of_gen : <span><span>char <a href="#type-gen">gen</a></span> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>of_gen gen</code> converts a <code>gen</code> of characters to a string.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_iter"><a href="#val-of_iter" class="anchor"></a><code><span><span class="keyword">val</span> of_iter : <span><span>char <a href="#type-iter">iter</a></span> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>of_iter iter</code> converts an <code>iter</code> of characters to a string.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.8</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_seq"><a href="#val-of_seq" class="anchor"></a><code><span><span class="keyword">val</span> of_seq : <span><span>char <a href="../../ocaml/Stdlib/Seq/index.html#type-t">Stdlib.Seq.t</a></span> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>of_seq seq</code> converts a <code>seq</code> of characters to a string. Renamed from <code>of_std_seq</code> since 3.0.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_list"><a href="#val-of_list" class="anchor"></a><code><span><span class="keyword">val</span> of_list : <span><span>char list</span> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>of_list lc</code> converts a list of characters <code>lc</code> to a string.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_array"><a href="#val-of_array" class="anchor"></a><code><span><span class="keyword">val</span> of_array : <span><span>char array</span> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>of_array ac</code> converts an array of characters <code>ac</code> to a string.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_array"><a href="#val-to_array" class="anchor"></a><code><span><span class="keyword">val</span> to_array : <span>string <span class="arrow">-></span></span> <span>char array</span></span></code></div><div class="spec-doc"><p><code>to_array s</code> returns the array of characters contained in the string <code>s</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-find"><a href="#val-find" class="anchor"></a><code><span><span class="keyword">val</span> find : <span>?start:int <span class="arrow">-></span></span> <span>sub:string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>find ~start ~sub s</code> returns the starting index of the first occurrence of <code>sub</code> within <code>s</code> or <code>-1</code>.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">start</span> <p>starting position in <code>s</code>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-find_all"><a href="#val-find_all" class="anchor"></a><code><span><span class="keyword">val</span> find_all : <span>?start:int <span class="arrow">-></span></span> <span>sub:string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span>int <a href="#type-gen">gen</a></span></span></code></div><div class="spec-doc"><p><code>find_all ~start ~sub s</code> finds all occurrences of <code>sub</code> in <code>s</code>, even overlapping instances and returns them in a generator <code>gen</code>.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">start</span> <p>starting position in <code>s</code>.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.17</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-find_all_l"><a href="#val-find_all_l" class="anchor"></a><code><span><span class="keyword">val</span> find_all_l : <span>?start:int <span class="arrow">-></span></span> <span>sub:string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span>int list</span></span></code></div><div class="spec-doc"><p><code>find_all_l ~sub s</code> finds all occurrences of <code>sub</code> in <code>s</code> and returns them in a list.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">start</span> <p>starting position in <code>s</code>.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.17</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-mem"><a href="#val-mem" class="anchor"></a><code><span><span class="keyword">val</span> mem : <span>?start:int <span class="arrow">-></span></span> <span>sub:string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>mem ~start ~sub s</code> is <code>true</code> iff <code>sub</code> is a substring of <code>s</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-rfind"><a href="#val-rfind" class="anchor"></a><code><span><span class="keyword">val</span> rfind : <span>sub:string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>rfind ~sub s</code> finds <code>sub</code> in string <code>s</code> from the right, returns its first index or <code>-1</code>. Should only be used with very small <code>sub</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-replace"><a href="#val-replace" class="anchor"></a><code><span><span class="keyword">val</span> replace :
|
||
<span>?which:<span>[ `Left <span>| `Right</span> <span>| `All</span> ]</span> <span class="arrow">-></span></span>
|
||
<span>sub:string <span class="arrow">-></span></span>
|
||
<span>by:string <span class="arrow">-></span></span>
|
||
<span>string <span class="arrow">-></span></span>
|
||
string</span></code></div><div class="spec-doc"><p><code>replace ~which ~sub ~by s</code> replaces some occurrences of <code>sub</code> by <code>by</code> in <code>s</code>.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">which</span> <p>decides whether the occurrences to replace are:</p><ul><li><code>`Left</code> first occurrence from the left (beginning).</li><li><code>`Right</code> first occurrence from the right (end).</li><li><code>`All</code> all occurrences (default).</li></ul></li></ul><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>sub = ""</code>.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.14</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_sub"><a href="#val-is_sub" class="anchor"></a><code><span><span class="keyword">val</span> is_sub : <span>sub:string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>sub_len:int <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>is_sub ~sub ~sub_pos s ~pos ~sub_len</code> returns <code>true</code> iff the substring of <code>sub</code> starting at position <code>sub_pos</code> and of length <code>sub_len</code> is a substring of <code>s</code> starting at position <code>pos</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-repeat"><a href="#val-repeat" class="anchor"></a><code><span><span class="keyword">val</span> repeat : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>repeat s n</code> creates a string by repeating the string <code>s</code> <code>n</code> times.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-prefix"><a href="#val-prefix" class="anchor"></a><code><span><span class="keyword">val</span> prefix : <span>pre:string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>prefix ~pre s</code> returns <code>true</code> iff <code>pre</code> is a prefix of <code>s</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-suffix"><a href="#val-suffix" class="anchor"></a><code><span><span class="keyword">val</span> suffix : <span>suf:string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>suffix ~suf s</code> returns <code>true</code> iff <code>suf</code> is a suffix of <code>s</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.7</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-chop_prefix"><a href="#val-chop_prefix" class="anchor"></a><code><span><span class="keyword">val</span> chop_prefix : <span>pre:string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span>string option</span></span></code></div><div class="spec-doc"><p><code>chop_prefix ~pre s</code> removes <code>pre</code> from <code>s</code> if <code>pre</code> really is a prefix of <code>s</code>, returns <code>None</code> otherwise.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.17</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-chop_suffix"><a href="#val-chop_suffix" class="anchor"></a><code><span><span class="keyword">val</span> chop_suffix : <span>suf:string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span>string option</span></span></code></div><div class="spec-doc"><p><code>chop_suffix ~suf s</code> removes <code>suf</code> from <code>s</code> if <code>suf</code> really is a suffix of <code>s</code>, returns <code>None</code> otherwise.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.17</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-take"><a href="#val-take" class="anchor"></a><code><span><span class="keyword">val</span> take : <span>int <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>take n s</code> keeps only the <code>n</code> first chars of <code>s</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.17</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-drop"><a href="#val-drop" class="anchor"></a><code><span><span class="keyword">val</span> drop : <span>int <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>drop n s</code> removes the <code>n</code> first chars of <code>s</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.17</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-take_drop"><a href="#val-take_drop" class="anchor"></a><code><span><span class="keyword">val</span> take_drop : <span>int <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> string * string</span></code></div><div class="spec-doc"><p><code>take_drop n s</code> is <code>take n s, drop n s</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.17</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-lines"><a href="#val-lines" class="anchor"></a><code><span><span class="keyword">val</span> lines : <span>string <span class="arrow">-></span></span> <span>string list</span></span></code></div><div class="spec-doc"><p><code>lines s</code> returns a list of the lines of <code>s</code> (splits along '\n').</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.10</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-lines_gen"><a href="#val-lines_gen" class="anchor"></a><code><span><span class="keyword">val</span> lines_gen : <span>string <span class="arrow">-></span></span> <span>string <a href="#type-gen">gen</a></span></span></code></div><div class="spec-doc"><p><code>lines_gen s</code> returns the <code>gen</code> of the lines of <code>s</code> (splits along '\n').</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.10</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-lines_iter"><a href="#val-lines_iter" class="anchor"></a><code><span><span class="keyword">val</span> lines_iter : <span>string <span class="arrow">-></span></span> <span>string <a href="#type-iter">iter</a></span></span></code></div><div class="spec-doc"><p><code>lines_iter s</code> returns the <code>iter</code> of the lines of <code>s</code> (splits along '\n').</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.2</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-lines_seq"><a href="#val-lines_seq" class="anchor"></a><code><span><span class="keyword">val</span> lines_seq : <span>string <span class="arrow">-></span></span> <span>string <a href="../../ocaml/Stdlib/Seq/index.html#type-t">Stdlib.Seq.t</a></span></span></code></div><div class="spec-doc"><p><code>lines_seq s</code> returns the <code>Seq.t</code> of the lines of <code>s</code> (splits along '\n').</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.2</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-concat_gen"><a href="#val-concat_gen" class="anchor"></a><code><span><span class="keyword">val</span> concat_gen : <span>sep:string <span class="arrow">-></span></span> <span><span>string <a href="#type-gen">gen</a></span> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>concat_gen ~sep gen</code> concatenates all strings of <code>gen</code>, separated with <code>sep</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.10</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-concat_seq"><a href="#val-concat_seq" class="anchor"></a><code><span><span class="keyword">val</span> concat_seq : <span>sep:string <span class="arrow">-></span></span> <span><span>string <a href="../../ocaml/Stdlib/Seq/index.html#type-t">Stdlib.Seq.t</a></span> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>concat_seq ~sep seq</code> concatenates all strings of <code>seq</code>, separated with <code>sep</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.2</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-concat_iter"><a href="#val-concat_iter" class="anchor"></a><code><span><span class="keyword">val</span> concat_iter : <span>sep:string <span class="arrow">-></span></span> <span><span>string <a href="#type-iter">iter</a></span> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>concat_iter ~sep iter</code> concatenates all strings of <code>iter</code>, separated with <code>sep</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.2</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unlines"><a href="#val-unlines" class="anchor"></a><code><span><span class="keyword">val</span> unlines : <span><span>string list</span> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>unlines ls</code> concatenates all strings of <code>ls</code>, separated with '\n'.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.10</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unlines_gen"><a href="#val-unlines_gen" class="anchor"></a><code><span><span class="keyword">val</span> unlines_gen : <span><span>string <a href="#type-gen">gen</a></span> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>unlines_gen gen</code> concatenates all strings of <code>gen</code>, separated with '\n'.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.10</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unlines_iter"><a href="#val-unlines_iter" class="anchor"></a><code><span><span class="keyword">val</span> unlines_iter : <span><span>string <a href="#type-iter">iter</a></span> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>unlines_iter iter</code> concatenates all strings of <code>iter</code>, separated with '\n'.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.2</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unlines_seq"><a href="#val-unlines_seq" class="anchor"></a><code><span><span class="keyword">val</span> unlines_seq : <span><span>string <a href="../../ocaml/Stdlib/Seq/index.html#type-t">Stdlib.Seq.t</a></span> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>unlines_seq seq</code> concatenates all strings of <code>seq</code>, separated with '\n'.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.2</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set"><a href="#val-set" class="anchor"></a><code><span><span class="keyword">val</span> set : <span>string <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>set s i c</code> creates a new string which is a copy of <code>s</code>, except for index <code>i</code>, which becomes <code>c</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if <code>i</code> is an invalid index.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iter"><a href="#val-iter" class="anchor"></a><code><span><span class="keyword">val</span> iter : <span><span>(<span>char <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>iter f s</code> applies function <code>f</code> on each character of <code>s</code>. Alias to <code>String</code>.iter.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-filter_map"><a href="#val-filter_map" class="anchor"></a><code><span><span class="keyword">val</span> filter_map : <span><span>(<span>char <span class="arrow">-></span></span> <span>char option</span>)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>filter_map f s</code> calls <code>(f a0) (f a1) … (f an)</code> where <code>a0 … an</code> are the characters of s. It returns the string of characters <code>ci</code> such as <code>f ai = Some ci</code> (when <code>f</code> returns <code>None</code>, the corresponding element of <code>s</code> is discarded).</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.17</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-filter"><a href="#val-filter" class="anchor"></a><code><span><span class="keyword">val</span> filter : <span><span>(<span>char <span class="arrow">-></span></span> bool)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>filter f s</code> discards characters of <code>s</code> not satisfying <code>f</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.17</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-uniq"><a href="#val-uniq" class="anchor"></a><code><span><span class="keyword">val</span> uniq : <span><span>(<span>char <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> bool)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>uniq eq s</code> remove consecutive duplicate characters in <code>s</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.4</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-flat_map"><a href="#val-flat_map" class="anchor"></a><code><span><span class="keyword">val</span> flat_map : <span>?sep:string <span class="arrow">-></span></span> <span><span>(<span>char <span class="arrow">-></span></span> string)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>flat_map ~sep f s</code> maps each chars of <code>s</code> to a string, then concatenates them all.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">sep</span> <p>optional separator between each generated string.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-for_all"><a href="#val-for_all" class="anchor"></a><code><span><span class="keyword">val</span> for_all : <span><span>(<span>char <span class="arrow">-></span></span> bool)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>for_all f s</code> is <code>true</code> iff all characters of <code>s</code> satisfy the predicate <code>f</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-exists"><a href="#val-exists" class="anchor"></a><code><span><span class="keyword">val</span> exists : <span><span>(<span>char <span class="arrow">-></span></span> bool)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>exists f s</code> is <code>true</code> iff some character of <code>s</code> satisfy the predicate <code>f</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-drop_while"><a href="#val-drop_while" class="anchor"></a><code><span><span class="keyword">val</span> drop_while : <span><span>(<span>char <span class="arrow">-></span></span> bool)</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>drop_while f s</code> discards any characters of <code>s</code> starting from the left, up to the first character <code>c</code> not satisfying <code>f c</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.2</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-rdrop_while"><a href="#val-rdrop_while" class="anchor"></a><code><span><span class="keyword">val</span> rdrop_while : <span><span>(<span>char <span class="arrow">-></span></span> bool)</span> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>rdrop_while f s</code> discards any characters of <code>s</code> starting from the right, up to the first character <code>c</code> not satisfying <code>f c</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.2</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ltrim"><a href="#val-ltrim" class="anchor"></a><code><span><span class="keyword">val</span> ltrim : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>ltrim s</code> trims space on the left (see <code>String</code>.trim for more details).</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.2</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-rtrim"><a href="#val-rtrim" class="anchor"></a><code><span><span class="keyword">val</span> rtrim : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>rtrim s</code> trims space on the right (see <code>String</code>.trim for more details).</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.2</li></ul></div></div><h3 id="operations-on-2-strings"><a href="#operations-on-2-strings" class="anchor"></a>Operations on 2 strings</h3><div class="odoc-spec"><div class="spec value anchored" id="val-map2"><a href="#val-map2" class="anchor"></a><code><span><span class="keyword">val</span> map2 : <span><span>(<span>char <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> char)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p><code>map2 f s1 s2</code> maps pairs of chars.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the strings have not the same length.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iter2"><a href="#val-iter2" class="anchor"></a><code><span><span class="keyword">val</span> iter2 : <span><span>(<span>char <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>iter2 f s1 s2</code> iterates on pairs of chars.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the strings have not the same length.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iteri2"><a href="#val-iteri2" class="anchor"></a><code><span><span class="keyword">val</span> iteri2 : <span><span>(<span>int <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p><code>iteri2 f s1 s2</code> iterates on pairs of chars with their index.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the strings have not the same length.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fold2"><a href="#val-fold2" class="anchor"></a><code><span><span class="keyword">val</span> fold2 : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>fold2 f init s1 s2</code> folds on pairs of chars.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the strings have not the same length.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-for_all2"><a href="#val-for_all2" class="anchor"></a><code><span><span class="keyword">val</span> for_all2 : <span><span>(<span>char <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> bool)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>for_all2 f s1 s2</code> returns <code>true</code> iff all pairs of chars satisfy the predicate <code>f</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the strings have not the same length.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-exists2"><a href="#val-exists2" class="anchor"></a><code><span><span class="keyword">val</span> exists2 : <span><span>(<span>char <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> bool)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>exists2 f s1 s2</code> returns <code>true</code> iff a pair of chars satisfy the predicate <code>f</code>.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the strings have not the same length.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></div></div><h3 id="ascii-functions"><a href="#ascii-functions" class="anchor"></a>Ascii functions</h3><p>Those functions are deprecated in <code>String</code> since 4.03, so we provide a stable alias for them even in older versions.</p><div class="odoc-spec"><div class="spec value anchored" id="val-equal_caseless"><a href="#val-equal_caseless" class="anchor"></a><code><span><span class="keyword">val</span> equal_caseless : <span>string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>equal_caseless s1 s2</code> compares <code>s1</code> and <code>s2</code> without respect to <b>ascii</b> lowercase.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.2</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_hex"><a href="#val-to_hex" class="anchor"></a><code><span><span class="keyword">val</span> to_hex : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>Convert a string with arbitrary content into a hexadecimal string.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.8</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_hex"><a href="#val-of_hex" class="anchor"></a><code><span><span class="keyword">val</span> of_hex : <span>string <span class="arrow">-></span></span> <span>string option</span></span></code></div><div class="spec-doc"><p>Convert a string in hex into a string with arbitrary content.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.8</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_hex_exn"><a href="#val-of_hex_exn" class="anchor"></a><code><span><span class="keyword">val</span> of_hex_exn : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>Same as <a href="#val-of_hex"><code>of_hex</code></a> but fails harder.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the input is not valid hex.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.8</li></ul></div></div><h3 id="finding"><a href="#finding" class="anchor"></a>Finding</h3><p>A relatively efficient algorithm for finding sub-strings.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.0</li></ul><div class="odoc-spec"><div class="spec module anchored" id="module-Find"><a href="#module-Find" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Find/index.html">Find</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><h3 id="splitting"><a href="#splitting" class="anchor"></a>Splitting</h3><div class="odoc-spec"><div class="spec module anchored" id="module-Split"><a href="#module-Split" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Split/index.html">Split</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-split_on_char"><a href="#val-split_on_char" class="anchor"></a><code><span><span class="keyword">val</span> split_on_char : <span>char <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span>string list</span></span></code></div><div class="spec-doc"><p><code>split_on_char by s</code> splits the string <code>s</code> along the given char <code>by</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.2</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-split"><a href="#val-split" class="anchor"></a><code><span><span class="keyword">val</span> split : <span>by:string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span>string list</span></span></code></div><div class="spec-doc"><p><code>split ~by s</code> splits the string <code>s</code> along the given string <code>by</code>. Alias to <a href="Split/index.html#val-list_cpy"><code>Split.list_cpy</code></a>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.2</li></ul></div></div><h3 id="utils"><a href="#utils" class="anchor"></a>Utils</h3><div class="odoc-spec"><div class="spec value anchored" id="val-compare_versions"><a href="#val-compare_versions" class="anchor"></a><code><span><span class="keyword">val</span> compare_versions : <span>string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>compare_versions s1 s2</code> compares <i>version strings</i> <code>s1</code> and <code>s2</code>, considering that numbers are above text.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.13</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compare_natural"><a href="#val-compare_natural" class="anchor"></a><code><span><span class="keyword">val</span> compare_natural : <span>string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>compare_natural s1 s2</code> is the Natural Sort Order, comparing chunks of digits as natural numbers. https://en.wikipedia.org/wiki/Natural_sort_order</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.3</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-edit_distance"><a href="#val-edit_distance" class="anchor"></a><code><span><span class="keyword">val</span> edit_distance : <span>?cutoff:int <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>edit_distance ~cutoff s1 s2</code> is the edition distance between the two strings <code>s1</code> and <code>s2</code>. This satisfies the classical distance axioms: it is always positive, symmetric, and satisfies the formula <code>distance s1 s2 + distance s2 s3 >= distance s1 s3</code>.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">cutoff</span> <p>if provided, it's a cap on the number of iterations. (since 3.0). This is useful if you just want to check whether the edit distance is less or equal than 2 without (use <code>edit_distance s1 s2 ~cutoff:3 <= 2</code>). <b>note</b> that contrary to what was previously documented here, the result can still be higher than <code>cutoff</code> if it's reached in <code><cutoff</code> iterations. However if the result is <code>< cutoff</code> then it is accurate.</p></li></ul></div></div><h3 id="infix-operators"><a href="#infix-operators" class="anchor"></a>Infix operators</h3><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.0</li></ul><div class="odoc-spec"><div class="spec module anchored" id="module-Infix"><a href="#module-Infix" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Infix/index.html">Infix</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <span class="keyword">module</span> <span class="keyword">type</span> <span class="keyword">of</span> <a href="Infix/index.html">Infix</a></span></code></summary><div class="odoc-spec"><div class="spec value anchored" id="val-(=)"><a href="#val-(=)" class="anchor"></a><code><span><span class="keyword">val</span> (=) : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-(<>)"><a href="#val-(<>)" class="anchor"></a><code><span><span class="keyword">val</span> (<>) : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-(<)"><a href="#val-(<)" class="anchor"></a><code><span><span class="keyword">val</span> (<) : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-(<=)"><a href="#val-(<=)" class="anchor"></a><code><span><span class="keyword">val</span> (<=) : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-(>=)"><a href="#val-(>=)" class="anchor"></a><code><span><span class="keyword">val</span> (>=) : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.0</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-(>)"><a href="#val-(>)" class="anchor"></a><code><span><span class="keyword">val</span> (>) : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.0</li></ul></div></div></details></div></div></body></html> |