ocaml-containers/dev/containers/CCString/index.html
2019-11-08 11:28:29 -06:00

2 lines
No EOL
43 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCString (containers.CCString)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc %%VERSION%%"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> <a href="../index.html">containers</a> &#x00BB; CCString</nav><h1>Module <code>CCString</code></h1><h2 id="basic-string-utils"><a href="#basic-string-utils" class="anchor"></a>Basic String Utils</h2><nav class="toc"><ul><li><a href="#common-signature">Common Signature</a></li><li><a href="#strings">Strings</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="#slices">Slices</a></li></ul></nav></header><dl><dt class="spec type" id="type-gen"><a href="#type-gen" class="anchor"></a><code><span class="keyword">type</span> <span>'a gen</span></code><code> = unit <span>&#45;&gt;</span> <span><span class="type-var">'a</span> option</span></code></dt><dt class="spec type" id="type-sequence"><a href="#type-sequence" class="anchor"></a><code><span class="keyword">type</span> <span>'a sequence</span></code><code> = <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> unit)</span> <span>&#45;&gt;</span> unit</code></dt><dt class="spec type" id="type-klist"><a href="#type-klist" class="anchor"></a><code><span class="keyword">type</span> <span>'a klist</span></code><code> = unit <span>&#45;&gt;</span> <span>[ `Nil <span><span>| `Cons</span> of <span class="type-var">'a</span> * <span><span class="type-var">'a</span> <a href="index.html#type-klist">klist</a></span></span> ]</span></code></dt></dl><section><header><h3 id="common-signature"><a href="#common-signature" class="anchor"></a>Common Signature</h3></header><div class="spec module-type" id="module-type-S"><a href="#module-type-S" class="anchor"></a><code><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-S/index.html">S</a> = <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div></section><section><header><h3 id="strings"><a href="#strings" class="anchor"></a>Strings</h3></header><div><div class="spec include"><div class="doc"><details open="open"><summary><span class="def"><code><span class="keyword">include</span> <span class="keyword">module</span> <span class="keyword">type</span> <span class="keyword">of</span> <span class="keyword">sig</span> ... <span class="keyword">end</span></code></span></summary><dl><dt class="spec external" id="val-length"><a href="#val-length" class="anchor"></a><code><span class="keyword">val</span> length : string <span>&#45;&gt;</span> int</code></dt><dt class="spec external" id="val-get"><a href="#val-get" class="anchor"></a><code><span class="keyword">val</span> get : string <span>&#45;&gt;</span> int <span>&#45;&gt;</span> char</code></dt><dt class="spec external" id="val-set"><a href="#val-set" class="anchor"></a><code><span class="keyword">val</span> set : bytes <span>&#45;&gt;</span> int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> unit</code></dt><dt class="spec external" id="val-create"><a href="#val-create" class="anchor"></a><code><span class="keyword">val</span> create : int <span>&#45;&gt;</span> bytes</code></dt></dl><dl><dt class="spec value" id="val-make"><a href="#val-make" class="anchor"></a><code><span class="keyword">val</span> make : int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> string</code></dt><dt class="spec value" id="val-init"><a href="#val-init" class="anchor"></a><code><span class="keyword">val</span> init : int <span>&#45;&gt;</span> <span>(int <span>&#45;&gt;</span> char)</span> <span>&#45;&gt;</span> string</code></dt><dt class="spec value" id="val-copy"><a href="#val-copy" class="anchor"></a><code><span class="keyword">val</span> copy : string <span>&#45;&gt;</span> string</code></dt><dt class="spec value" id="val-sub"><a href="#val-sub" class="anchor"></a><code><span class="keyword">val</span> sub : string <span>&#45;&gt;</span> int <span>&#45;&gt;</span> int <span>&#45;&gt;</span> string</code></dt><dt class="spec value" id="val-fill"><a href="#val-fill" class="anchor"></a><code><span class="keyword">val</span> fill : bytes <span>&#45;&gt;</span> int <span>&#45;&gt;</span> int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> unit</code></dt><dt class="spec value" id="val-blit"><a href="#val-blit" class="anchor"></a><code><span class="keyword">val</span> blit : string <span>&#45;&gt;</span> int <span>&#45;&gt;</span> bytes <span>&#45;&gt;</span> int <span>&#45;&gt;</span> int <span>&#45;&gt;</span> unit</code></dt><dt class="spec value" id="val-concat"><a href="#val-concat" class="anchor"></a><code><span class="keyword">val</span> concat : string <span>&#45;&gt;</span> <span>string list</span> <span>&#45;&gt;</span> string</code></dt><dt class="spec value" id="val-iter"><a href="#val-iter" class="anchor"></a><code><span class="keyword">val</span> iter : <span>(char <span>&#45;&gt;</span> unit)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> unit</code></dt><dt class="spec value" id="val-iteri"><a href="#val-iteri" class="anchor"></a><code><span class="keyword">val</span> iteri : <span>(int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> unit)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> unit</code></dt><dt class="spec value" id="val-map"><a href="#val-map" class="anchor"></a><code><span class="keyword">val</span> map : <span>(char <span>&#45;&gt;</span> char)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string</code></dt><dt class="spec value" id="val-mapi"><a href="#val-mapi" class="anchor"></a><code><span class="keyword">val</span> mapi : <span>(int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> char)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string</code></dt><dt class="spec value" id="val-trim"><a href="#val-trim" class="anchor"></a><code><span class="keyword">val</span> trim : string <span>&#45;&gt;</span> string</code></dt><dt class="spec value" id="val-escaped"><a href="#val-escaped" class="anchor"></a><code><span class="keyword">val</span> escaped : string <span>&#45;&gt;</span> string</code></dt><dt class="spec value" id="val-index"><a href="#val-index" class="anchor"></a><code><span class="keyword">val</span> index : string <span>&#45;&gt;</span> char <span>&#45;&gt;</span> int</code></dt><dt class="spec value" id="val-index_opt"><a href="#val-index_opt" class="anchor"></a><code><span class="keyword">val</span> index_opt : string <span>&#45;&gt;</span> char <span>&#45;&gt;</span> <span>int option</span></code></dt><dt class="spec value" id="val-rindex"><a href="#val-rindex" class="anchor"></a><code><span class="keyword">val</span> rindex : string <span>&#45;&gt;</span> char <span>&#45;&gt;</span> int</code></dt><dt class="spec value" id="val-rindex_opt"><a href="#val-rindex_opt" class="anchor"></a><code><span class="keyword">val</span> rindex_opt : string <span>&#45;&gt;</span> char <span>&#45;&gt;</span> <span>int option</span></code></dt><dt class="spec value" id="val-index_from"><a href="#val-index_from" class="anchor"></a><code><span class="keyword">val</span> index_from : string <span>&#45;&gt;</span> int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> int</code></dt><dt class="spec value" id="val-index_from_opt"><a href="#val-index_from_opt" class="anchor"></a><code><span class="keyword">val</span> index_from_opt : string <span>&#45;&gt;</span> int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> <span>int option</span></code></dt><dt class="spec value" id="val-rindex_from"><a href="#val-rindex_from" class="anchor"></a><code><span class="keyword">val</span> rindex_from : string <span>&#45;&gt;</span> int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> int</code></dt><dt class="spec value" id="val-rindex_from_opt"><a href="#val-rindex_from_opt" class="anchor"></a><code><span class="keyword">val</span> rindex_from_opt : string <span>&#45;&gt;</span> int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> <span>int option</span></code></dt><dt class="spec value" id="val-contains"><a href="#val-contains" class="anchor"></a><code><span class="keyword">val</span> contains : string <span>&#45;&gt;</span> char <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-contains_from"><a href="#val-contains_from" class="anchor"></a><code><span class="keyword">val</span> contains_from : string <span>&#45;&gt;</span> int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-rcontains_from"><a href="#val-rcontains_from" class="anchor"></a><code><span class="keyword">val</span> rcontains_from : string <span>&#45;&gt;</span> int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-uppercase"><a href="#val-uppercase" class="anchor"></a><code><span class="keyword">val</span> uppercase : string <span>&#45;&gt;</span> string</code></dt><dt class="spec value" id="val-lowercase"><a href="#val-lowercase" class="anchor"></a><code><span class="keyword">val</span> lowercase : string <span>&#45;&gt;</span> string</code></dt><dt class="spec value" id="val-capitalize"><a href="#val-capitalize" class="anchor"></a><code><span class="keyword">val</span> capitalize : string <span>&#45;&gt;</span> string</code></dt><dt class="spec value" id="val-uncapitalize"><a href="#val-uncapitalize" class="anchor"></a><code><span class="keyword">val</span> uncapitalize : string <span>&#45;&gt;</span> string</code></dt><dt class="spec value" id="val-uppercase_ascii"><a href="#val-uppercase_ascii" class="anchor"></a><code><span class="keyword">val</span> uppercase_ascii : string <span>&#45;&gt;</span> string</code></dt><dt class="spec value" id="val-lowercase_ascii"><a href="#val-lowercase_ascii" class="anchor"></a><code><span class="keyword">val</span> lowercase_ascii : string <span>&#45;&gt;</span> string</code></dt><dt class="spec value" id="val-capitalize_ascii"><a href="#val-capitalize_ascii" class="anchor"></a><code><span class="keyword">val</span> capitalize_ascii : string <span>&#45;&gt;</span> string</code></dt><dt class="spec value" id="val-uncapitalize_ascii"><a href="#val-uncapitalize_ascii" class="anchor"></a><code><span class="keyword">val</span> uncapitalize_ascii : string <span>&#45;&gt;</span> string</code></dt></dl><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code><code> = string</code></dt></dl><dl><dt class="spec value" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span class="keyword">val</span> compare : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> int</code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> bool</code></dt><dt class="spec value" id="val-split_on_char"><a href="#val-split_on_char" class="anchor"></a><code><span class="keyword">val</span> split_on_char : char <span>&#45;&gt;</span> string <span>&#45;&gt;</span> <span>string list</span></code></dt></dl><dl><dt class="spec external" id="val-unsafe_get"><a href="#val-unsafe_get" class="anchor"></a><code><span class="keyword">val</span> unsafe_get : string <span>&#45;&gt;</span> int <span>&#45;&gt;</span> char</code></dt><dt class="spec external" id="val-unsafe_set"><a href="#val-unsafe_set" class="anchor"></a><code><span class="keyword">val</span> unsafe_set : bytes <span>&#45;&gt;</span> int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> unit</code></dt><dt class="spec external" id="val-unsafe_blit"><a href="#val-unsafe_blit" class="anchor"></a><code><span class="keyword">val</span> unsafe_blit : string <span>&#45;&gt;</span> int <span>&#45;&gt;</span> bytes <span>&#45;&gt;</span> int <span>&#45;&gt;</span> int <span>&#45;&gt;</span> unit</code></dt><dt class="spec external" id="val-unsafe_fill"><a href="#val-unsafe_fill" class="anchor"></a><code><span class="keyword">val</span> unsafe_fill : bytes <span>&#45;&gt;</span> int <span>&#45;&gt;</span> int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> unit</code></dt></dl></details></div></div></div><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : string <span>&#45;&gt;</span> string <span>&#45;&gt;</span> bool</code></dt><dd><p>Equality function on strings.</p></dd></dl><dl><dt class="spec value" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span class="keyword">val</span> compare : string <span>&#45;&gt;</span> string <span>&#45;&gt;</span> int</code></dt><dt class="spec value" id="val-is_empty"><a href="#val-is_empty" class="anchor"></a><code><span class="keyword">val</span> is_empty : string <span>&#45;&gt;</span> bool</code></dt><dd><p><code>is_empty s</code> returns <code>true</code> iff <code>s</code> is empty (i.e. its length is 0).</p><dl><dt>since</dt><dd>1.5</dd></dl></dd></dl><dl><dt class="spec value" id="val-hash"><a href="#val-hash" class="anchor"></a><code><span class="keyword">val</span> hash : string <span>&#45;&gt;</span> int</code></dt><dt class="spec value" id="val-init"><a href="#val-init" class="anchor"></a><code><span class="keyword">val</span> init : int <span>&#45;&gt;</span> <span>(int <span>&#45;&gt;</span> char)</span> <span>&#45;&gt;</span> string</code></dt><dd><p>Like <code>Array.init</code>.</p><dl><dt>since</dt><dd>0.3.3</dd></dl></dd></dl><dl><dt class="spec value" id="val-rev"><a href="#val-rev" class="anchor"></a><code><span class="keyword">val</span> rev : string <span>&#45;&gt;</span> string</code></dt><dd><p><code>rev s</code> returns the reverse of <code>s</code>.</p><dl><dt>since</dt><dd>0.17</dd></dl></dd></dl><dl><dt class="spec value" id="val-pad"><a href="#val-pad" class="anchor"></a><code><span class="keyword">val</span> pad : <span>?&#8288;side:<span>[ `Left <span>| `Right</span> ]</span></span> <span>&#45;&gt;</span> <span>?&#8288;c:char</span> <span>&#45;&gt;</span> int <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string</code></dt><dd><p><code>pad n str</code> ensures that <code>str</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><dl><dt>parameter side</dt><dd><p>determines where padding occurs (default: <code>`Left</code>).</p></dd></dl><dl><dt>parameter c</dt><dd><p>the char used to pad (default: ' ').</p></dd></dl><dl><dt>since</dt><dd>0.17</dd></dl></dd></dl><dl><dt class="spec value" id="val-of_char"><a href="#val-of_char" class="anchor"></a><code><span class="keyword">val</span> of_char : char <span>&#45;&gt;</span> string</code></dt><dd><p><code>of_char 'a'</code> is <code>&quot;a&quot;</code>.</p><dl><dt>since</dt><dd>0.19</dd></dl></dd></dl><dl><dt class="spec value" id="val-of_gen"><a href="#val-of_gen" class="anchor"></a><code><span class="keyword">val</span> of_gen : <span>char <a href="index.html#type-gen">gen</a></span> <span>&#45;&gt;</span> string</code></dt><dd><p>Convert a <code>gen</code> of characters to a string.</p></dd></dl><dl><dt class="spec value" id="val-of_seq"><a href="#val-of_seq" class="anchor"></a><code><span class="keyword">val</span> of_seq : <span>char <a href="index.html#type-sequence">sequence</a></span> <span>&#45;&gt;</span> string</code></dt><dd><p>Convert a <code>sequence</code> of characters to a string.</p></dd></dl><dl><dt class="spec value" id="val-of_klist"><a href="#val-of_klist" class="anchor"></a><code><span class="keyword">val</span> of_klist : <span>char <a href="index.html#type-klist">klist</a></span> <span>&#45;&gt;</span> string</code></dt><dd><p>Convert a <code>klist</code> of characters to a string.</p></dd></dl><dl><dt class="spec value" id="val-of_list"><a href="#val-of_list" class="anchor"></a><code><span class="keyword">val</span> of_list : <span>char list</span> <span>&#45;&gt;</span> string</code></dt><dd><p>Convert a list of characters to a string.</p></dd></dl><dl><dt class="spec value" id="val-of_array"><a href="#val-of_array" class="anchor"></a><code><span class="keyword">val</span> of_array : <span>char array</span> <span>&#45;&gt;</span> string</code></dt><dd><p>Convert an array of characters to a string.</p></dd></dl><dl><dt class="spec value" id="val-to_array"><a href="#val-to_array" class="anchor"></a><code><span class="keyword">val</span> to_array : string <span>&#45;&gt;</span> <span>char array</span></code></dt><dd><p>Return the array of characters contained in the string.</p></dd></dl><dl><dt class="spec value" id="val-find"><a href="#val-find" class="anchor"></a><code><span class="keyword">val</span> find : <span>?&#8288;start:int</span> <span>&#45;&gt;</span> <span>sub:string</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> int</code></dt><dd><p>Find <code>sub</code> in string, returns its first index or <code>-1</code>.</p></dd></dl><dl><dt class="spec value" id="val-find_all"><a href="#val-find_all" class="anchor"></a><code><span class="keyword">val</span> find_all : <span>?&#8288;start:int</span> <span>&#45;&gt;</span> <span>sub:string</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> <span>int <a href="index.html#type-gen">gen</a></span></code></dt><dd><p><code>find_all ~sub s</code> finds all occurrences of <code>sub</code> in <code>s</code>, even overlapping instances.</p><dl><dt>parameter start</dt><dd><p>starting position in <code>s</code>.</p></dd></dl><dl><dt>since</dt><dd>0.17</dd></dl></dd></dl><dl><dt class="spec value" id="val-find_all_l"><a href="#val-find_all_l" class="anchor"></a><code><span class="keyword">val</span> find_all_l : <span>?&#8288;start:int</span> <span>&#45;&gt;</span> <span>sub:string</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> <span>int list</span></code></dt><dd><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><dl><dt>parameter start</dt><dd><p>starting position in <code>s</code>.</p></dd></dl><dl><dt>since</dt><dd>0.17</dd></dl></dd></dl><dl><dt class="spec value" id="val-mem"><a href="#val-mem" class="anchor"></a><code><span class="keyword">val</span> mem : <span>?&#8288;start:int</span> <span>&#45;&gt;</span> <span>sub:string</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> bool</code></dt><dd><p><code>mem ~sub s</code> is <code>true</code> iff <code>sub</code> is a substring of <code>s</code>.</p><dl><dt>since</dt><dd>0.12</dd></dl></dd></dl><dl><dt class="spec value" id="val-rfind"><a href="#val-rfind" class="anchor"></a><code><span class="keyword">val</span> rfind : <span>sub:string</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> int</code></dt><dd><p>Find <code>sub</code> in string from the right, returns its first index or <code>-1</code>. Should only be used with very small <code>sub</code>.</p><dl><dt>since</dt><dd>0.12</dd></dl></dd></dl><dl><dt class="spec value" id="val-replace"><a href="#val-replace" class="anchor"></a><code><span class="keyword">val</span> replace : <span>?&#8288;which:<span>[ `Left <span>| `Right</span> <span>| `All</span> ]</span></span> <span>&#45;&gt;</span> <span>sub:string</span> <span>&#45;&gt;</span> <span>by:string</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string</code></dt><dd><p><code>replace ~sub ~by s</code> replaces some occurrences of <code>sub</code> by <code>by</code> in <code>s</code>.</p><dl><dt>parameter which</dt><dd><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></dd></dl><dl><dt>raises Invalid_argument</dt><dd><p>if <code>sub = &quot;&quot;</code>.</p></dd></dl><dl><dt>since</dt><dd>0.14</dd></dl></dd></dl><dl><dt class="spec value" id="val-is_sub"><a href="#val-is_sub" class="anchor"></a><code><span class="keyword">val</span> is_sub : <span>sub:string</span> <span>&#45;&gt;</span> int <span>&#45;&gt;</span> string <span>&#45;&gt;</span> int <span>&#45;&gt;</span> <span>sub_len:int</span> <span>&#45;&gt;</span> bool</code></dt><dd><p><code>is_sub ~sub i s j ~len</code> returns <code>true</code> iff the substring of <code>sub</code> starting at position <code>i</code> and of length <code>len</code> is a substring of <code>s</code> starting at position <code>j</code>.</p></dd></dl><dl><dt class="spec value" id="val-repeat"><a href="#val-repeat" class="anchor"></a><code><span class="keyword">val</span> repeat : string <span>&#45;&gt;</span> int <span>&#45;&gt;</span> string</code></dt><dd><p>The same string, repeated n times.</p></dd></dl><dl><dt class="spec value" id="val-prefix"><a href="#val-prefix" class="anchor"></a><code><span class="keyword">val</span> prefix : <span>pre:string</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> bool</code></dt><dd><p><code>prefix ~pre s</code> returns <code>true</code> iff <code>pre</code> is a prefix of <code>s</code>.</p></dd></dl><dl><dt class="spec value" id="val-suffix"><a href="#val-suffix" class="anchor"></a><code><span class="keyword">val</span> suffix : <span>suf:string</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> bool</code></dt><dd><p><code>suffix ~suf s</code> returns <code>true</code> iff <code>suf</code> is a suffix of <code>s</code>.</p><dl><dt>since</dt><dd>0.7</dd></dl></dd></dl><dl><dt class="spec value" id="val-chop_prefix"><a href="#val-chop_prefix" class="anchor"></a><code><span class="keyword">val</span> chop_prefix : <span>pre:string</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> <span>string option</span></code></dt><dd><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><dl><dt>since</dt><dd>0.17</dd></dl></dd></dl><dl><dt class="spec value" id="val-chop_suffix"><a href="#val-chop_suffix" class="anchor"></a><code><span class="keyword">val</span> chop_suffix : <span>suf:string</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> <span>string option</span></code></dt><dd><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><dl><dt>since</dt><dd>0.17</dd></dl></dd></dl><dl><dt class="spec value" id="val-take"><a href="#val-take" class="anchor"></a><code><span class="keyword">val</span> take : int <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string</code></dt><dd><p><code>take n s</code> keeps only the <code>n</code> first chars of <code>s</code>.</p><dl><dt>since</dt><dd>0.17</dd></dl></dd></dl><dl><dt class="spec value" id="val-drop"><a href="#val-drop" class="anchor"></a><code><span class="keyword">val</span> drop : int <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string</code></dt><dd><p><code>drop n s</code> removes the <code>n</code> first chars of <code>s</code>.</p><dl><dt>since</dt><dd>0.17</dd></dl></dd></dl><dl><dt class="spec value" id="val-take_drop"><a href="#val-take_drop" class="anchor"></a><code><span class="keyword">val</span> take_drop : int <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string * string</code></dt><dd><p><code>take_drop n s = take n s, drop n s</code>.</p><dl><dt>since</dt><dd>0.17</dd></dl></dd></dl><dl><dt class="spec value" id="val-lines"><a href="#val-lines" class="anchor"></a><code><span class="keyword">val</span> lines : string <span>&#45;&gt;</span> <span>string list</span></code></dt><dd><p><code>lines s</code> returns a list of the lines of <code>s</code> (splits along '\n').</p><dl><dt>since</dt><dd>0.10</dd></dl></dd></dl><dl><dt class="spec value" id="val-lines_gen"><a href="#val-lines_gen" class="anchor"></a><code><span class="keyword">val</span> lines_gen : string <span>&#45;&gt;</span> <span>string <a href="index.html#type-gen">gen</a></span></code></dt><dd><p><code>lines_gen s</code> returns a generator of the lines of <code>s</code> (splits along '\n').</p><dl><dt>since</dt><dd>0.10</dd></dl></dd></dl><dl><dt class="spec value" id="val-concat_gen"><a href="#val-concat_gen" class="anchor"></a><code><span class="keyword">val</span> concat_gen : <span>sep:string</span> <span>&#45;&gt;</span> <span>string <a href="index.html#type-gen">gen</a></span> <span>&#45;&gt;</span> string</code></dt><dd><p><code>concat_gen ~sep g</code> concatenates all strings of <code>g</code>, separated with <code>sep</code>.</p><dl><dt>since</dt><dd>0.10</dd></dl></dd></dl><dl><dt class="spec value" id="val-unlines"><a href="#val-unlines" class="anchor"></a><code><span class="keyword">val</span> unlines : <span>string list</span> <span>&#45;&gt;</span> string</code></dt><dd><p><code>unlines l</code> concatenates all strings of <code>l</code>, separated with '\n'.</p><dl><dt>since</dt><dd>0.10</dd></dl></dd></dl><dl><dt class="spec value" id="val-unlines_gen"><a href="#val-unlines_gen" class="anchor"></a><code><span class="keyword">val</span> unlines_gen : <span>string <a href="index.html#type-gen">gen</a></span> <span>&#45;&gt;</span> string</code></dt><dd><p><code>unlines_gen g</code> concatenates all strings of <code>g</code>, separated with '\n'.</p><dl><dt>since</dt><dd>0.10</dd></dl></dd></dl><dl><dt class="spec value" id="val-set"><a href="#val-set" class="anchor"></a><code><span class="keyword">val</span> set : string <span>&#45;&gt;</span> int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> string</code></dt><dd><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><dl><dt>raises Invalid_argument</dt><dd><p>if <code>i</code> is an invalid index.</p></dd></dl><dl><dt>since</dt><dd>0.12</dd></dl></dd></dl><dl><dt class="spec value" id="val-iter"><a href="#val-iter" class="anchor"></a><code><span class="keyword">val</span> iter : <span>(char <span>&#45;&gt;</span> unit)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> unit</code></dt><dd><p>Alias to <span class="xref-unresolved" title="unresolved reference to &quot;String.iter&quot;"><code>String</code>.iter</span>.</p><dl><dt>since</dt><dd>0.12</dd></dl></dd></dl><dl><dt class="spec value" id="val-iteri"><a href="#val-iteri" class="anchor"></a><code><span class="keyword">val</span> iteri : <span>(int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> unit)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> unit</code></dt><dd><p>Iter on chars with their index.</p><dl><dt>since</dt><dd>0.12</dd></dl></dd></dl><dl><dt class="spec value" id="val-map"><a href="#val-map" class="anchor"></a><code><span class="keyword">val</span> map : <span>(char <span>&#45;&gt;</span> char)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string</code></dt><dd><p>Map chars.</p><dl><dt>since</dt><dd>0.12</dd></dl></dd></dl><dl><dt class="spec value" id="val-mapi"><a href="#val-mapi" class="anchor"></a><code><span class="keyword">val</span> mapi : <span>(int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> char)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string</code></dt><dd><p>Map chars with their index.</p><dl><dt>since</dt><dd>0.12</dd></dl></dd></dl><dl><dt class="spec value" id="val-filter_map"><a href="#val-filter_map" class="anchor"></a><code><span class="keyword">val</span> filter_map : <span>(char <span>&#45;&gt;</span> <span>char option</span>)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string</code></dt><dd><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><dl><dt>since</dt><dd>0.17</dd></dl></dd></dl><dl><dt class="spec value" id="val-filter"><a href="#val-filter" class="anchor"></a><code><span class="keyword">val</span> filter : <span>(char <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string</code></dt><dd><p><code>filter f s</code> discards characters not satisfying <code>f</code>.</p><dl><dt>since</dt><dd>0.17</dd></dl></dd></dl><dl><dt class="spec value" id="val-flat_map"><a href="#val-flat_map" class="anchor"></a><code><span class="keyword">val</span> flat_map : <span>?&#8288;sep:string</span> <span>&#45;&gt;</span> <span>(char <span>&#45;&gt;</span> string)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string</code></dt><dd><p>Map each chars to a string, then concatenates them all.</p><dl><dt>parameter sep</dt><dd><p>optional separator between each generated string.</p></dd></dl><dl><dt>since</dt><dd>0.12</dd></dl></dd></dl><dl><dt class="spec value" id="val-for_all"><a href="#val-for_all" class="anchor"></a><code><span class="keyword">val</span> for_all : <span>(char <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> bool</code></dt><dd><p>True for all chars?</p><dl><dt>since</dt><dd>0.12</dd></dl></dd></dl><dl><dt class="spec value" id="val-exists"><a href="#val-exists" class="anchor"></a><code><span class="keyword">val</span> exists : <span>(char <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> bool</code></dt><dd><p>True for some char?</p><dl><dt>since</dt><dd>0.12</dd></dl></dd></dl><div><div class="spec include"><div class="doc"><details open="open"><summary><span class="def"><code><span class="keyword">include</span> <a href="index.html#module-type-S">S</a> <span class="keyword">with</span> <span class="keyword">type</span> <a href="index.html#module-type-S">S</a>.t := string</code></span></summary><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> t</code></dt></dl><dl><dt class="spec value" id="val-length"><a href="#val-length" class="anchor"></a><code><span class="keyword">val</span> length : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> int</code></dt><dd><p>Return the length (number of characters) of the given string.</p></dd></dl><dl><dt class="spec value" id="val-blit"><a href="#val-blit" class="anchor"></a><code><span class="keyword">val</span> blit : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> int <span>&#45;&gt;</span> Bytes.t <span>&#45;&gt;</span> int <span>&#45;&gt;</span> int <span>&#45;&gt;</span> unit</code></dt><dd><p>Like <span class="xref-unresolved" title="unresolved reference to &quot;String.blit&quot;"><code>String</code>.blit</span>. Compatible with the <code>-safe-string</code> option.</p><dl><dt>raises Invalid_argument</dt><dd><p>if indices are not valid.</p></dd></dl></dd></dl><dl><dt class="spec value" id="val-fold"><a href="#val-fold" class="anchor"></a><code><span class="keyword">val</span> fold : <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> char <span>&#45;&gt;</span> <span class="type-var">'a</span>)</span> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <span class="type-var">'a</span></code></dt><dd><p>Fold on chars by increasing index.</p><dl><dt>since</dt><dd>0.7</dd></dl></dd></dl><section><header><h3 id="conversions"><a href="#conversions" class="anchor"></a>Conversions</h3></header><dl><dt class="spec value" id="val-to_gen"><a href="#val-to_gen" class="anchor"></a><code><span class="keyword">val</span> to_gen : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <span>char <a href="index.html#type-gen">gen</a></span></code></dt><dd><p>Return the <code>gen</code> of characters contained in the string.</p></dd></dl><dl><dt class="spec value" id="val-to_seq"><a href="#val-to_seq" class="anchor"></a><code><span class="keyword">val</span> to_seq : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <span>char <a href="index.html#type-sequence">sequence</a></span></code></dt><dd><p>Return the <code>sequence</code> of characters contained in the string.</p></dd></dl><dl><dt class="spec value" id="val-to_klist"><a href="#val-to_klist" class="anchor"></a><code><span class="keyword">val</span> to_klist : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <span>char <a href="index.html#type-klist">klist</a></span></code></dt><dd><p>Return the <code>klist</code> of characters contained in the string.</p></dd></dl><dl><dt class="spec value" id="val-to_list"><a href="#val-to_list" class="anchor"></a><code><span class="keyword">val</span> to_list : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <span>char list</span></code></dt><dd><p>Return the list of characters contained in the string.</p></dd></dl><dl><dt class="spec value" id="val-pp_buf"><a href="#val-pp_buf" class="anchor"></a><code><span class="keyword">val</span> pp_buf : Buffer.t <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Renamed from <code>pp</code> since 2.0.</p></dd></dl><dl><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val</span> pp : Format.formatter <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> unit</code></dt><dd><p>Print the string within quotes.</p><p>Renamed from <code>print</code> since 2.0.</p></dd></dl></section></details></div></div></div><dl><dt class="spec value" id="val-drop_while"><a href="#val-drop_while" class="anchor"></a><code><span class="keyword">val</span> drop_while : <span>(char <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>drop_while f s</code> discards any characters starting from the left, up to the first character <code>c</code> not satisfying <code>f c</code>.</p><dl><dt>since</dt><dd>2.2</dd></dl></dd></dl><dl><dt class="spec value" id="val-rdrop_while"><a href="#val-rdrop_while" class="anchor"></a><code><span class="keyword">val</span> rdrop_while : <span>(char <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>rdrop_while f s</code> discards any characters starting from the right, up to the first character <code>c</code> not satisfying <code>f c</code>.</p><dl><dt>since</dt><dd>2.2</dd></dl></dd></dl><dl><dt class="spec value" id="val-ltrim"><a href="#val-ltrim" class="anchor"></a><code><span class="keyword">val</span> ltrim : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt><dd><p>Trim space on the left (see <span class="xref-unresolved" title="unresolved reference to &quot;String.trim&quot;"><code>String</code>.trim</span> for more details).</p><dl><dt>since</dt><dd>1.2</dd></dl></dd></dl><dl><dt class="spec value" id="val-rtrim"><a href="#val-rtrim" class="anchor"></a><code><span class="keyword">val</span> rtrim : <a href="index.html#type-t">t</a> <span>&#45;&gt;</span> <a href="index.html#type-t">t</a></code></dt><dd><p>Trim space on the right (see <span class="xref-unresolved" title="unresolved reference to &quot;String.trim&quot;"><code>String</code>.trim</span> for more details).</p><dl><dt>since</dt><dd>1.2</dd></dl></dd></dl></section><section><header><h3 id="operations-on-2-strings"><a href="#operations-on-2-strings" class="anchor"></a>Operations on 2 strings</h3></header><dl><dt class="spec value" id="val-map2"><a href="#val-map2" class="anchor"></a><code><span class="keyword">val</span> map2 : <span>(char <span>&#45;&gt;</span> char <span>&#45;&gt;</span> char)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string</code></dt><dd><p>Map pairs of chars.</p><dl><dt>raises Invalid_argument</dt><dd><p>if the strings have not the same length.</p></dd></dl><dl><dt>since</dt><dd>0.12</dd></dl></dd></dl><dl><dt class="spec value" id="val-iter2"><a href="#val-iter2" class="anchor"></a><code><span class="keyword">val</span> iter2 : <span>(char <span>&#45;&gt;</span> char <span>&#45;&gt;</span> unit)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string <span>&#45;&gt;</span> unit</code></dt><dd><p>Iterate on pairs of chars.</p><dl><dt>raises Invalid_argument</dt><dd><p>if the strings have not the same length.</p></dd></dl><dl><dt>since</dt><dd>0.12</dd></dl></dd></dl><dl><dt class="spec value" id="val-iteri2"><a href="#val-iteri2" class="anchor"></a><code><span class="keyword">val</span> iteri2 : <span>(int <span>&#45;&gt;</span> char <span>&#45;&gt;</span> char <span>&#45;&gt;</span> unit)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string <span>&#45;&gt;</span> unit</code></dt><dd><p>Iterate on pairs of chars with their index.</p><dl><dt>raises Invalid_argument</dt><dd><p>if the strings have not the same length.</p></dd></dl><dl><dt>since</dt><dd>0.12</dd></dl></dd></dl><dl><dt class="spec value" id="val-fold2"><a href="#val-fold2" class="anchor"></a><code><span class="keyword">val</span> fold2 : <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> char <span>&#45;&gt;</span> char <span>&#45;&gt;</span> <span class="type-var">'a</span>)</span> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string <span>&#45;&gt;</span> <span class="type-var">'a</span></code></dt><dd><p>Fold on pairs of chars.</p><dl><dt>raises Invalid_argument</dt><dd><p>if the strings have not the same length.</p></dd></dl><dl><dt>since</dt><dd>0.12</dd></dl></dd></dl><dl><dt class="spec value" id="val-for_all2"><a href="#val-for_all2" class="anchor"></a><code><span class="keyword">val</span> for_all2 : <span>(char <span>&#45;&gt;</span> char <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string <span>&#45;&gt;</span> bool</code></dt><dd><p>All pairs of chars respect the predicate?</p><dl><dt>raises Invalid_argument</dt><dd><p>if the strings have not the same length.</p></dd></dl><dl><dt>since</dt><dd>0.12</dd></dl></dd></dl><dl><dt class="spec value" id="val-exists2"><a href="#val-exists2" class="anchor"></a><code><span class="keyword">val</span> exists2 : <span>(char <span>&#45;&gt;</span> char <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> string <span>&#45;&gt;</span> bool</code></dt><dd><p>Exists a pair of chars?</p><dl><dt>raises Invalid_argument</dt><dd><p>if the strings have not the same length.</p></dd></dl><dl><dt>since</dt><dd>0.12</dd></dl></dd></dl></section><section><header><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></header><dl><dt class="spec value" id="val-capitalize_ascii"><a href="#val-capitalize_ascii" class="anchor"></a><code><span class="keyword">val</span> capitalize_ascii : string <span>&#45;&gt;</span> string</code></dt><dd><p>See <code>String</code>.</p><dl><dt>since</dt><dd>0.18</dd></dl></dd></dl><dl><dt class="spec value" id="val-uncapitalize_ascii"><a href="#val-uncapitalize_ascii" class="anchor"></a><code><span class="keyword">val</span> uncapitalize_ascii : string <span>&#45;&gt;</span> string</code></dt><dd><p>See <code>String</code>.</p><dl><dt>since</dt><dd>0.18</dd></dl></dd></dl><dl><dt class="spec value" id="val-uppercase_ascii"><a href="#val-uppercase_ascii" class="anchor"></a><code><span class="keyword">val</span> uppercase_ascii : string <span>&#45;&gt;</span> string</code></dt><dd><p>See <code>String</code>.</p><dl><dt>since</dt><dd>0.18</dd></dl></dd></dl><dl><dt class="spec value" id="val-lowercase_ascii"><a href="#val-lowercase_ascii" class="anchor"></a><code><span class="keyword">val</span> lowercase_ascii : string <span>&#45;&gt;</span> string</code></dt><dd><p>See <code>String</code>.</p><dl><dt>since</dt><dd>0.18</dd></dl></dd></dl><dl><dt class="spec value" id="val-equal_caseless"><a href="#val-equal_caseless" class="anchor"></a><code><span class="keyword">val</span> equal_caseless : string <span>&#45;&gt;</span> string <span>&#45;&gt;</span> bool</code></dt><dd><p>Comparison without respect to <b>ascii</b> lowercase.</p><dl><dt>since</dt><dd>1.2</dd></dl></dd></dl></section><section><header><h3 id="finding"><a href="#finding" class="anchor"></a>Finding</h3><p>A relatively efficient algorithm for finding sub-strings.</p><dl><dt>since</dt><dd>1.0</dd></dl></header><div class="spec module" id="module-Find"><a href="#module-Find" class="anchor"></a><code><span class="keyword">module</span> <a href="Find/index.html">Find</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div></section><section><header><h3 id="splitting"><a href="#splitting" class="anchor"></a>Splitting</h3></header><div class="spec module" id="module-Split"><a href="#module-Split" class="anchor"></a><code><span class="keyword">module</span> <a href="Split/index.html">Split</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><dl><dt class="spec value" id="val-split_on_char"><a href="#val-split_on_char" class="anchor"></a><code><span class="keyword">val</span> split_on_char : char <span>&#45;&gt;</span> string <span>&#45;&gt;</span> <span>string list</span></code></dt><dd><p>Split the string along the given char.</p><dl><dt>since</dt><dd>1.2</dd></dl></dd></dl><dl><dt class="spec value" id="val-split"><a href="#val-split" class="anchor"></a><code><span class="keyword">val</span> split : <span>by:string</span> <span>&#45;&gt;</span> string <span>&#45;&gt;</span> <span>string list</span></code></dt><dd><p>Alias to <a href="Split/index.html#val-list_cpy"><code>Split.list_cpy</code></a>.</p><dl><dt>since</dt><dd>1.2</dd></dl></dd></dl></section><section><header><h3 id="utils"><a href="#utils" class="anchor"></a>Utils</h3></header><dl><dt class="spec value" id="val-compare_versions"><a href="#val-compare_versions" class="anchor"></a><code><span class="keyword">val</span> compare_versions : string <span>&#45;&gt;</span> string <span>&#45;&gt;</span> int</code></dt><dd><p><code>compare_versions a b</code> compares <i>version strings</i> <code> a</code> and <code>b</code>, considering that numbers are above text.</p><dl><dt>since</dt><dd>0.13</dd></dl></dd></dl><dl><dt class="spec value" id="val-compare_natural"><a href="#val-compare_natural" class="anchor"></a><code><span class="keyword">val</span> compare_natural : string <span>&#45;&gt;</span> string <span>&#45;&gt;</span> int</code></dt><dd><p>Natural Sort Order, comparing chunks of digits as natural numbers. https://en.wikipedia.org/wiki/Natural_sort_order</p><dl><dt>since</dt><dd>1.3</dd></dl></dd></dl><dl><dt class="spec value" id="val-edit_distance"><a href="#val-edit_distance" class="anchor"></a><code><span class="keyword">val</span> edit_distance : string <span>&#45;&gt;</span> string <span>&#45;&gt;</span> int</code></dt><dd><p>Edition distance between two strings. This satisfies the classical distance axioms: it is always positive, symmetric, and satisfies the formula <code>distance a b + distance b c &gt;= distance a c</code>.</p></dd></dl></section><section><header><h3 id="slices"><a href="#slices" class="anchor"></a>Slices</h3><p>A contiguous part of a string</p></header><div class="spec module" id="module-Sub"><a href="#module-Sub" class="anchor"></a><code><span class="keyword">module</span> <a href="Sub/index.html">Sub</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div></section></div></body></html>