Sophie

Sophie

distrib > Mageia > 3 > i586 > by-pkgid > 6b52775537444320595eea17362fc446 > files > 8

ocaml-text-doc-0.6-3.mga3.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
<link rel="Start" href="index.html">
<link rel="next" href="Encoding.html">
<link rel="Up" href="index.html">
<link title="Index of types" rel=Appendix href="index_types.html">
<link title="Index of exceptions" rel=Appendix href="index_exceptions.html">
<link title="Index of values" rel=Appendix href="index_values.html">
<link title="Index of modules" rel=Appendix href="index_modules.html">
<link title="Text" rel="Chapter" href="Text.html">
<link title="Encoding" rel="Chapter" href="Encoding.html"><link title="Encoding/decoding" rel="Section" href="#6_Encodingdecoding">
<link title="Informations" rel="Section" href="#6_Informations">
<link title="Construction/access" rel="Section" href="#6_Constructionaccess">
<link title="Locale specific functions" rel="Section" href="#6_Localespecificfunctions">
<link title="Transformations" rel="Section" href="#6_Transformations">
<link title="Tests" rel="Section" href="#6_Tests">
<link title="Text traversals" rel="Section" href="#6_Texttraversals">
<link title="Scanning" rel="Section" href="#6_Scanning">
<link title="Splitting" rel="Section" href="#6_Splitting">
<link title="Tests" rel="Section" href="#6_Tests">
<link title="Stripping" rel="Section" href="#6_Stripping">
<link title="Pointers" rel="Section" href="#6_Pointers">
<title>Text</title>
</head>
<body>
<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
&nbsp;<a class="post" href="Encoding.html" title="Encoding">Next</a>
</div>
<h1>Module <a href="type_Text.html">Text</a></h1>
<pre><span class="keyword">module</span> Text: <code class="code">sig</code> <a href="Text.html">..</a> <code class="code">end</code></pre><div class="info">
UTF-8 encoded strings<br>
</div>
<hr width="100%">
<br>
This modules is intended for ``text'' manipulation. By text we
    mean sequence of unicode characters.
<p>

    For compatibility and simplicity reasons, text is represented by
    UTF-8 encoded strings, and there is no special types for unicode
    characters, whose are just represented by 1-length text.
<p>

    All functions of this module expect to by applied on valid UTF-8
    encoded strings, and may raise <code class="code">Invalid</code> if this is not the case.<br>
<pre><span id="TYPEt"><span class="keyword">type</span> <code class="type"></code>t</span> = <code class="type">string</code> </pre>
<div class="info">
Type of text<br>
</div>

<pre><span id="EXCEPTIONInvalid"><span class="keyword">exception</span> Invalid</span> <span class="keyword">of</span> <code class="type">string * string</code></pre>
<div class="info">
<code class="code">Invalid(error, text)</code> Exception raised when an invalid UTF-8
      encoded string is encountered. <code class="code">text</code> is the faulty text and
      <code class="code">error</code> is a description of the first error in <code class="code">text</code>.<br>
</div>
<pre><span id="VALcheck"><span class="keyword">val</span> check</span> : <code class="type">string -> string option</code></pre><div class="info">
<code class="code">check str</code> checks that <code class="code">str</code> is a valid UTF-8 encoded
      string. Returns <code class="code">None</code> if it is the case, or <code class="code">Some error</code>
      otherwise.<br>
</div>
<pre><span id="VALvalidate"><span class="keyword">val</span> validate</span> : <code class="type">string -> unit</code></pre><div class="info">
Same as check but raises an exception in case the argument is
      not a valid text.<br>
</div>
<br>
<h6 id="6_Encodingdecoding">Encoding/decoding</h6><br>
<pre><span id="VALencode"><span class="keyword">val</span> encode</span> : <code class="type">?encoding:<a href="Encoding.html#TYPEt">Encoding.t</a> -> <a href="Text.html#TYPEt">t</a> -> string</code></pre><div class="info">
<code class="code">encode ?encoding txt</code> encode the given text with <code class="code">encoding</code>,
      which defaults to <a href="Encoding.html#VALsystem"><code class="code">Encoding.system</code></a> plus transliteration.<br>
</div>
<pre><span id="VALdecode"><span class="keyword">val</span> decode</span> : <code class="type">?encoding:<a href="Encoding.html#TYPEt">Encoding.t</a> -> string -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">decode ?encoding str</code> decode the given string encoded in
      <code class="code">encoding</code>, which defaults to <a href="Encoding.html#VALsystem"><code class="code">Encoding.system</code></a><br>
</div>
<pre><span id="VALto_ascii"><span class="keyword">val</span> to_ascii</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">to_ascii txt</code> returns an approximative ascii version of
      <code class="code">txt</code>. This is the same as <code class="code">encode ~encoding:"ASCII//TRANSLIT" txt</code><br>
</div>
<br>
<h6 id="6_Informations">Informations</h6><br>
<pre><span id="VALlength"><span class="keyword">val</span> length</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> int</code></pre><div class="info">
Return the number of unicode character contained in the given
      text<br>
</div>
<br>
<h6 id="6_Constructionaccess">Construction/access</h6><br>
<pre><span id="VALcode"><span class="keyword">val</span> code</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> int</code></pre><div class="info">
<code class="code">code text</code> returns the unicode code-point of first character of
      <code class="code">text</code>.
<p>

      For example:
<p>
<ul>
<li><code class="code">code "A" = 65</code></li>
<li><code class="code">code "é" = 0xe9</code></li>
</ul>
<br>
</div>
<pre><span id="VALchar"><span class="keyword">val</span> char</span> : <code class="type">int -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">char code</code> returns the character corresponding to the given
      unicode code-point.
<p>

      For example:
<p>
<ul>
<li><code class="code">char 65 = "A"</code></li>
<li><code class="code">char 0xe9 = "é"</code></li>
</ul>
<br>
<b>Raises</b> <code>Invalid_argument</code> if <code class="code">code</code> is not a valid unicode
      code-point. Valid code-point are all integers in the range
      <code class="code">0..0x10ffff</code>.<br>
</div>
<pre><span id="VALget"><span class="keyword">val</span> get</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> int -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">get text n</code> returns the <code class="code">n</code>-th character of <code class="code">text</code>. <code class="code">n</code> is a
      number of unicode character, not bytes. A negative value is
      interpreted as a position from the end of the text.
<p>

      For example:
<p>
<ul>
<li><code class="code">get "abc" 0 = "a"</code></li>
<li><code class="code">get "abc" 2 = "c"</code></li>
<li><code class="code">get "aéb" 1 = "é"</code></li>
<li><code class="code">get "aéb" 2 = "b"</code></li>
<li><code class="code">nth "abc" (-1) = "c"</code></li>
</ul>
<br>
</div>
<pre><span id="VALsub"><span class="keyword">val</span> sub</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> int -> int -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">sub text pos len</code> Returns the sub-text of <code class="code">text</code> starting at
      position <code class="code">pos</code> and of length <code class="code">len</code>. <code class="code">pos</code> and/or <code class="code">len</code> may be
      negative.
<p>

      For example:
<p>
<ul>
<li><code class="code">sub "ocaml" 1 2 = "ca"</code></li>
<li><code class="code">sub "ocaml" 3 (-2) = "ca"</code></li>
<li><code class="code">sub "ocaml" (-2) 1 = "m"</code></li>
</ul>
<br>
</div>
<pre><span id="VALslice"><span class="keyword">val</span> slice</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> int -> int -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">slice text a b</code> returns the text contained in <code class="code">txt</code> between <code class="code">a</code>
      and <code class="code">b</code> (exlusive). <code class="code">a</code> and/or <code class="code">b</code> may be negative.
<p>

      For example:
<p>
<ul>
<li><code class="code">slice "abc" 0 1 = "a"</code></li>
<li><code class="code">slice "abcdef" 1 (-1) = "bcde"</code></li>
</ul>
<br>
</div>
<pre><span id="VALsplice"><span class="keyword">val</span> splice</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> int -> int -> <a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">splice text a b repl</code> replace the text between <code class="code">a</code> and <code class="code">b</code>
      (exclusive) by <code class="code">repl</code>.
<p>

      For example:
<p>
<ul>
<li><code class="code">splice "abcd" 1 2 "plop" = "aplopcd"</code></li>
<li><code class="code">splice "abcd" 1 2 "" = "acd"</code></li>
</ul>
<br>
</div>
<pre><span id="VALrepeat"><span class="keyword">val</span> repeat</span> : <code class="type">int -> <a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">repeat n text</code> returns <code class="code">text</code> concatened <code class="code">n</code>-times with
      itself.<br>
</div>
<pre><span id="VALinit"><span class="keyword">val</span> init</span> : <code class="type">int -> (int -> <a href="Text.html#TYPEt">t</a>) -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">init n f</code> returns <code class="code">f 0 ^ f 1 ^ ... ^ f (n - 1)</code><br>
</div>
<pre><span id="VALrev_init"><span class="keyword">val</span> rev_init</span> : <code class="type">int -> (int -> <a href="Text.html#TYPEt">t</a>) -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">rev_init n f</code> returns <code class="code">f (n - 1) ^ f 1 ^ ... ^ f 0</code><br>
</div>
<br>
<h6 id="6_Localespecificfunctions">Locale specific functions</h6><br>
<pre><span id="VALupper"><span class="keyword">val</span> upper</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">upper t</code> returns the upper-cased version of <code class="code">t</code>.<br>
</div>
<pre><span id="VALlower"><span class="keyword">val</span> lower</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">lower t</code> returns the upper-cased version of <code class="code">t</code>.<br>
</div>
<pre><span id="VALcapitalize"><span class="keyword">val</span> capitalize</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">capitalize t</code> returns <code class="code">t</code> with its first letter upper-cased<br>
</div>
<pre><span id="VALuncapitalize"><span class="keyword">val</span> uncapitalize</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">capitalize t</code> returns <code class="code">t</code> with its first letter lower-cased<br>
</div>
<pre><span id="VALcompare"><span class="keyword">val</span> compare</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> -> int</code></pre><div class="info">
Compares two texts according to the current locale<br>
</div>
<pre><span id="VALicompare"><span class="keyword">val</span> icompare</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> -> int</code></pre><div class="info">
Compares two texts, case-insensitive<br>
</div>
<pre><span id="VALtransform"><span class="keyword">val</span> transform</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">transform str</code> transforms <code class="code">str</code> in a way such that comparing
      two string <code class="code">str1</code> and <code class="code">str2</code> transformed with
      <code class="code">Pervasives.compare</code> give the same result as comparing them with
      <a href="Text.html#VALcompare"><code class="code">Text.compare</code></a>.<br>
</div>
<br>
<h6 id="6_Transformations">Transformations</h6><br>
<pre><span id="VALrev"><span class="keyword">val</span> rev</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">rev t</code> returns the sequence of characters of <code class="code">t</code> in reverse
      order.
<p>

      For example:
<p>
<ul>
<li><code class="code">rev "ocaml" = "lmaco"</code></li>
<li><code class="code">rev "héhé" = "éhéh"</code></li>
</ul>
<br>
</div>
<pre><span id="VALconcat"><span class="keyword">val</span> concat</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> list -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">concat sep l</code> returns the concatenation of all texts contained
      in <code class="code">l</code>, separated by <code class="code">sep</code>.
<p>

      For example:
<p>
<ul>
<li><code class="code">concat "/" ["a"; "b"; "c"] = "a/b/c"</code></li>
</ul>
<br>
</div>
<pre><span id="VALrev_concat"><span class="keyword">val</span> rev_concat</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> list -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">rev_concat sep l</code> returns the concatenation of all texts
      contained in <code class="code">l</code>, separated by <code class="code">sep</code>.
<p>

      For example:
<p>
<ul>
<li><code class="code">concat "/" ["a"; "b"; "c"] = "c/b/a"</code></li>
</ul>
<br>
</div>
<pre><span id="VALexplode"><span class="keyword">val</span> explode</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> list</code></pre><div class="info">
<code class="code">explode txt</code> returns the list of all characters of <code class="code">txt</code>.
<p>

      For example:
<p>
<ul>
<li><code class="code">explode "" = []</code></li>
<li><code class="code">explode "abé" = ["a"; "b"; "é"]</code></li>
</ul>
<br>
</div>
<pre><span id="VALrev_explode"><span class="keyword">val</span> rev_explode</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> list</code></pre><div class="info">
<code class="code">rev_explode txt</code> returns the list of all characters of <code class="code">txt</code>,
      in reverse order.
<p>

      For example:
<p>
<ul>
<li><code class="code">rev_explode "ocaml" = ["l"; "m"; "a"; "c"; "o"]</code></li>
</ul>
<br>
</div>
<pre><span id="VALimplode"><span class="keyword">val</span> implode</span> : <code class="type"><a href="Text.html#TYPEt">t</a> list -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">implode l</code> returns the concatenation of all texts contained in
      <code class="code">l</code>. This is the same as <code class="code">concat "" l</code>, but a bit more
      efficient.
<p>

      For example:
<p>
<ul>
<li><code class="code">implode ["o"; "c"; "a"; "m"; "l"] = "ocaml"</code></li>
<li><code class="code">implode ["abc"; "def"] = "abcdef"</code></li>
</ul>
<br>
</div>
<pre><span id="VALrev_implode"><span class="keyword">val</span> rev_implode</span> : <code class="type"><a href="Text.html#TYPEt">t</a> list -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">rev_implode l</code> returns the concatenation of all texts contained
      in <code class="code">l</code>, in reverse order.
<p>

      For example:
<p>
<ul>
<li><code class="code">implode ["o"; "c"; "a"; "m"; "l"] = "lmaco"</code></li>
<li><code class="code">implode ["abc"; "def"] = "defabc"</code></li>
</ul>
<br>
</div>
<br>
<h6 id="6_Tests">Tests</h6><br>
<br>
The following functions tests whether all characters of the given
    text verify a property:<br>
<pre><span id="VALis_ascii"><span class="keyword">val</span> is_ascii</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> bool</code></pre><pre><span id="VALis_alnum"><span class="keyword">val</span> is_alnum</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> bool</code></pre><pre><span id="VALis_alpha"><span class="keyword">val</span> is_alpha</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> bool</code></pre><pre><span id="VALis_blank"><span class="keyword">val</span> is_blank</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> bool</code></pre><pre><span id="VALis_cntrl"><span class="keyword">val</span> is_cntrl</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> bool</code></pre><pre><span id="VALis_digit"><span class="keyword">val</span> is_digit</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> bool</code></pre><pre><span id="VALis_graph"><span class="keyword">val</span> is_graph</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> bool</code></pre><pre><span id="VALis_lower"><span class="keyword">val</span> is_lower</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> bool</code></pre><pre><span id="VALis_print"><span class="keyword">val</span> is_print</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> bool</code></pre><pre><span id="VALis_punct"><span class="keyword">val</span> is_punct</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> bool</code></pre><pre><span id="VALis_space"><span class="keyword">val</span> is_space</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> bool</code></pre><pre><span id="VALis_upper"><span class="keyword">val</span> is_upper</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> bool</code></pre><pre><span id="VALis_xdigit"><span class="keyword">val</span> is_xdigit</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> bool</code></pre><br>
<h6 id="6_Texttraversals">Text traversals</h6><br>
<br>
For all the following functions we give a equivalent
    implementation, and examples. They have the same semantic as the
    equivalent implementation but are more efficient.<br>
<pre><span id="VALmap"><span class="keyword">val</span> map</span> : <code class="type">(<a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a>) -> <a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">map f text</code> ~ <code class="code">implode (List.map f (explode text))</code>
<p>

      <code class="code">map (function "a" -&gt; "x" | t -&gt; t) "abc" = "xbc"</code><br>
</div>
<pre><span id="VALrev_map"><span class="keyword">val</span> rev_map</span> : <code class="type">(<a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a>) -> <a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">rev_map f text</code> ~ <code class="code">implode (List.rev_map f (explode text))</code>
<p>

      <code class="code">rev_map (function "a" -&gt; "x" | t -&gt; t) "abc" = "cbx"</code><br>
</div>
<pre><span id="VALfold"><span class="keyword">val</span> fold</span> : <code class="type">(<a href="Text.html#TYPEt">t</a> -> 'a -> 'a) -> <a href="Text.html#TYPEt">t</a> -> 'a -> 'a</code></pre><div class="info">
<code class="code">fold f x text</code> ~ <code class="code">List.fold_left f x (explode text)</code>
<p>

      <code class="code">fold (fun acc t -&gt; acc + code t) 0 "ABC" = 198</code><br>
</div>
<pre><span id="VALrev_fold"><span class="keyword">val</span> rev_fold</span> : <code class="type">(<a href="Text.html#TYPEt">t</a> -> 'a -> 'a) -> <a href="Text.html#TYPEt">t</a> -> 'a -> 'a</code></pre><div class="info">
<code class="code">fold f text x</code> ~ <code class="code">List.fold_left f x (rev_explode text)</code>
<p>

      <code class="code">rev_fold (fun t acc -&gt; acc + code t) "ABC" 0 = 198</code><br>
</div>
<pre><span id="VALfilter"><span class="keyword">val</span> filter</span> : <code class="type">(<a href="Text.html#TYPEt">t</a> -> bool) -> <a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">filter text</code> ~ <code class="code">implode (List.filter f (explode text))</code>
<p>

      <code class="code">filter is_alpha "1a2E" = "aE"</code><br>
</div>
<pre><span id="VALrev_filter"><span class="keyword">val</span> rev_filter</span> : <code class="type">(<a href="Text.html#TYPEt">t</a> -> bool) -> <a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">rev_filter text</code> ~ <code class="code">implode (List.filter f (rev_explode text))</code>
<p>

      <code class="code">rev_filter is_alpha "1a2E" = "Ea"</code><br>
</div>
<pre><span id="VALiter"><span class="keyword">val</span> iter</span> : <code class="type">(<a href="Text.html#TYPEt">t</a> -> unit) -> <a href="Text.html#TYPEt">t</a> -> unit</code></pre><div class="info">
<code class="code">iter f text</code> ~ <code class="code">List.iter f (explode text)</code><br>
</div>
<pre><span id="VALrev_iter"><span class="keyword">val</span> rev_iter</span> : <code class="type">(<a href="Text.html#TYPEt">t</a> -> unit) -> <a href="Text.html#TYPEt">t</a> -> unit</code></pre><div class="info">
<code class="code">iter f text</code> ~ <code class="code">List.iter f (rev_explode text)</code><br>
</div>
<br>
<h6 id="6_Scanning">Scanning</h6><br>
<pre><span id="VALfor_all"><span class="keyword">val</span> for_all</span> : <code class="type">(<a href="Text.html#TYPEt">t</a> -> bool) -> <a href="Text.html#TYPEt">t</a> -> bool</code></pre><div class="info">
<code class="code">for_all f text</code> returns whether all characters of <code class="code">text</code> verify
      the predicate <code class="code">f</code><br>
</div>
<pre><span id="VALexists"><span class="keyword">val</span> exists</span> : <code class="type">(<a href="Text.html#TYPEt">t</a> -> bool) -> <a href="Text.html#TYPEt">t</a> -> bool</code></pre><div class="info">
<code class="code">exists f text</code> returns whether at least one character of <code class="code">text</code>
      verify <code class="code">f</code><br>
</div>
<pre><span id="VALcount"><span class="keyword">val</span> count</span> : <code class="type">(<a href="Text.html#TYPEt">t</a> -> bool) -> <a href="Text.html#TYPEt">t</a> -> int</code></pre><div class="info">
<code class="code">count f text</code> returhs the number of characters of <code class="code">text</code>
      verifying <code class="code">f</code><br>
</div>
<br>
<h6 id="6_Splitting">Splitting</h6><br>
<pre><span id="VALwords"><span class="keyword">val</span> words</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> list</code></pre><div class="info">
Returns all words of the given text. Words are sequence of
      non-space and non-punct characters.<br>
</div>
<pre><span id="VALlines"><span class="keyword">val</span> lines</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> list</code></pre><div class="info">
Returns all lines of the given text, without end of line
      characters. Both <code class="code">"\r\n"</code> and <code class="code">"\n"</code> are recognized as end of
      line delimiters.<br>
</div>
<pre><span id="VALsplit"><span class="keyword">val</span> split</span> : <code class="type">?max:int -> ?sep:<a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> list</code></pre><div class="info">
<code class="code">split ?max ?sep text</code> split <code class="code">text</code> according to <code class="code">sep</code>. If <code class="code">max</code>
      is specified, returns at most <code class="code">max</code> splits. <code class="code">sep</code> defaults to <code class="code">" "</code>.
<p>

      For example:
<p>
<ul>
<li><code class="code">split ~sep:"/" "a/b/c" = ["a"; "b"; "c"]</code></li>
<li><code class="code">split ~sep:".." "a..b..c" = ["a"; "b"; "c"]</code></li>
<li><code class="code">split ~max:1 "a b c" = ["a b c"]</code></li>
<li><code class="code">split ~max:2 "a b c" = ["a"; "b c"]</code></li>
</ul>
<br>
</div>
<pre><span id="VALrev_split"><span class="keyword">val</span> rev_split</span> : <code class="type">?max:int -> ?sep:<a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> list</code></pre><div class="info">
<code class="code">rev_split ?max text sep</code> split <code class="code">text</code> according to <code class="code">sep</code> in reverse
      order.
<p>

      For example:
<p>
<ul>
<li><code class="code">split ~sep:"/" "a/b/c" = ["c"; "b"; "a"]</code></li>
<li><code class="code">split ~max:1 "a b c" = ["a b c"]</code></li>
<li><code class="code">split ~max:2 "a b c" = ["a b"; "c"]</code></li>
<li><code class="code">rev_split ~max:2 ~sep:"." "toto.mli" = ["toto"; "mli"]</code></li>
</ul>
<br>
</div>
<pre><span id="VALreplace"><span class="keyword">val</span> replace</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> patt:<a href="Text.html#TYPEt">t</a> -> repl:<a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">replace text ~patt ~repl</code> replace all occurences of <code class="code">patt</code> in
      <code class="code">text</code> by <code class="code">repl</code>.
<p>

      For example:
<p>
<ul>
<li><code class="code">replace "abcd" ~patt:"b" ~repl:"x" = "axcd"</code></li>
<li><code class="code">replace "Hello world!" ~patt:"world" ~repl:"you" = "Hello you!"</code></li>
</ul>
<br>
</div>
<br>
<h6 id="6_Tests">Tests</h6><br>
<pre><span id="VALcontains"><span class="keyword">val</span> contains</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> -> bool</code></pre><div class="info">
<code class="code">contains text sub</code> returns whether <code class="code">sub</code> appears in <code class="code">text</code><br>
</div>
<pre><span id="VALstarts_with"><span class="keyword">val</span> starts_with</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> -> bool</code></pre><div class="info">
<code class="code">starts_with text prefix</code> returns <code class="code">true</code> iff <code class="code">s</code> starts with
      <code class="code">prefix</code>.
<p>

      For example:
<p>
<ul>
<li><code class="code">starts_with "abcd" "ab" = true</code></li>
<li><code class="code">starts_with "abcd" "af" = false</code></li>
<li><code class="code">starts_with "ab" "abcd" = false</code></li>
</ul>
<br>
</div>
<pre><span id="VALends_with"><span class="keyword">val</span> ends_with</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> -> bool</code></pre><div class="info">
<code class="code">ends_with s suffix</code> returns <code class="code">true</code> iff <code class="code">s</code> ends with
      <code class="code">suffix</code>.
<p>

      For example:
<p>
<ul>
<li><code class="code">ends_with "abcd" "cd" = true</code></li>
<li><code class="code">ends_with "abcd" "hd" = false</code></li>
<li><code class="code">ends_with "ab" "abc" = false</code></li>
</ul>
<br>
</div>
<br>
<h6 id="6_Stripping">Stripping</h6><br>
<pre><span id="VALstrip"><span class="keyword">val</span> strip</span> : <code class="type">?chars:<a href="Text.html#TYPEt">t</a> list -> <a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">strip ?chars text</code> removes all characters of <code class="code">text</code> which are
      part of <code class="code">chars</code> at the right and left. <code class="code">chars</code> defaults to
      whitespaces.<br>
</div>
<pre><span id="VALrstrip"><span class="keyword">val</span> rstrip</span> : <code class="type">?chars:<a href="Text.html#TYPEt">t</a> list -> <a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">rstrip ?chars text</code> removes all characters of <code class="code">text</code> which are
      part of <code class="code">chars</code> at the right.<br>
</div>
<pre><span id="VALlstrip"><span class="keyword">val</span> lstrip</span> : <code class="type">?chars:<a href="Text.html#TYPEt">t</a> list -> <a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">lstrip ?chars text</code> removes all characters of <code class="code">text</code> which are
      part of <code class="code">chars</code> at the left.<br>
</div>
<pre><span id="VALrchop"><span class="keyword">val</span> rchop</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">rchop t</code> returns <code class="code">t</code> without is last character. Returns <code class="code">""</code> if
      <code class="code">t = ""</code>.<br>
</div>
<pre><span id="VALlchop"><span class="keyword">val</span> lchop</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">lchop t</code> returns <code class="code">t</code> without is first character. Returns <code class="code">""</code>
      if <code class="code">t = ""</code><br>
</div>
<br>
<h6 id="6_Pointers">Pointers</h6><br>
<br>
Since characters are not encoded by a fixed number of bytes,
    accessing them by character position is not efficient. The
    following functions allow you to iterates in a string in an
    efficient way.<br>
<pre><span id="TYPEpointer"><span class="keyword">type</span> <code class="type"></code>pointer</span> </pre>
<div class="info">
A pointer to a unicode character in a text.<br>
</div>

<pre><span id="VALpointer_l"><span class="keyword">val</span> pointer_l</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEpointer">pointer</a></code></pre><div class="info">
Returns a pointer to the left of the given text<br>
</div>
<pre><span id="VALpointer_r"><span class="keyword">val</span> pointer_r</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEpointer">pointer</a></code></pre><div class="info">
Returns a pointer to the right of the given text<br>
</div>
<pre><span id="VALpointer_at"><span class="keyword">val</span> pointer_at</span> : <code class="type"><a href="Text.html#TYPEt">t</a> -> int -> <a href="Text.html#TYPEpointer">pointer</a></code></pre><div class="info">
<code class="code">pointer_at txt n</code> returns a pointer to the character at
      position <code class="code">n</code> in <code class="code">txt</code>.<br>
</div>
<pre><span id="VALnext"><span class="keyword">val</span> next</span> : <code class="type"><a href="Text.html#TYPEpointer">pointer</a> -> (<a href="Text.html#TYPEt">t</a> * <a href="Text.html#TYPEpointer">pointer</a>) option</code></pre><div class="info">
<code class="code">next ptr</code> if <code class="code">ptr</code> is at the end of text, returns <code class="code">None</code>,
      otherwise, returns <code class="code">Some(ch, ptr')</code> where <code class="code">ch</code> is the character
      at current position and <code class="code">ptr'</code> is the pointer to the next
      character of the text.<br>
</div>
<pre><span id="VALprev"><span class="keyword">val</span> prev</span> : <code class="type"><a href="Text.html#TYPEpointer">pointer</a> -> (<a href="Text.html#TYPEt">t</a> * <a href="Text.html#TYPEpointer">pointer</a>) option</code></pre><div class="info">
<code class="code">prev ptr</code> if <code class="code">ptr</code> is at the beginning of text, returns <code class="code">None</code>,
      otherwise, returns <code class="code">Some(ch, ptr')</code> where <code class="code">ptr'</code> points to the
      previous character and <code class="code">ch</code> is the character at <code class="code">ptr'</code>.<br>
</div>
<pre><span id="VALmove"><span class="keyword">val</span> move</span> : <code class="type">int -> <a href="Text.html#TYPEpointer">pointer</a> -> <a href="Text.html#TYPEpointer">pointer</a></code></pre><div class="info">
<code class="code">move n ptr</code> moves <code class="code">ptr</code> by <code class="code">n</code> unicode characters. If <code class="code">n &lt; 0</code>
      then <code class="code">ptr</code> is moved to the left. Raises <code class="code">Invalid_argument</code> if
      the result is outside the text.<br>
</div>
<pre><span id="VALchunk"><span class="keyword">val</span> chunk</span> : <code class="type"><a href="Text.html#TYPEpointer">pointer</a> -> <a href="Text.html#TYPEpointer">pointer</a> -> <a href="Text.html#TYPEt">t</a></code></pre><div class="info">
<code class="code">chunk a b</code> returns the chunk of text between <code class="code">a</code> and
      <code class="code">b</code>. Raises <code class="code">Invalid_arugment</code> if <code class="code">a</code> or <code class="code">b</code>.<br>
</div>
<pre><span id="VALoffset"><span class="keyword">val</span> offset</span> : <code class="type"><a href="Text.html#TYPEpointer">pointer</a> -> int</code></pre><div class="info">
<code class="code">offset ptr</code> returns the position in bytes of <code class="code">ptr</code><br>
</div>
<pre><span id="VALposition"><span class="keyword">val</span> position</span> : <code class="type"><a href="Text.html#TYPEpointer">pointer</a> -> int</code></pre><div class="info">
<code class="code">position ptr</code> returns the position in unicode character of <code class="code">ptr</code><br>
</div>
<pre><span id="VALequal_at"><span class="keyword">val</span> equal_at</span> : <code class="type"><a href="Text.html#TYPEpointer">pointer</a> -> <a href="Text.html#TYPEt">t</a> -> bool</code></pre><div class="info">
<code class="code">equal_at ptr str</code> returns wether <code class="code">ptr</code> points to a substring
      equal to <code class="code">str</code><br>
</div>
<pre><span id="VALfind"><span class="keyword">val</span> find</span> : <code class="type">?from:<a href="Text.html#TYPEpointer">pointer</a> -> <a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEpointer">pointer</a> option</code></pre><div class="info">
<code class="code">find ?from text patt</code> returns a pointer to the first occurrence
      of <code class="code">patt</code> in <code class="code">text</code>.<br>
</div>
<pre><span id="VALrev_find"><span class="keyword">val</span> rev_find</span> : <code class="type">?from:<a href="Text.html#TYPEpointer">pointer</a> -> <a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEt">t</a> -> <a href="Text.html#TYPEpointer">pointer</a> option</code></pre><div class="info">
<code class="code">find ?from text patt</code> returns a pointer to the last occurrence
      of <code class="code">patt</code> in <code class="code">text</code>.<br>
</div>
</body></html>