mirror of
https://github.com/wren-lang/wren.git
synced 2026-01-12 22:58:40 +01:00
Fresh docs!
This commit is contained in:
@ -105,14 +105,14 @@ fifth code point in a string without walking the string from the beginning and
|
||||
counting them as you go. </p>
|
||||
<p>Because counting code points is relatively slow, the indexes passed to string
|
||||
methods are <em>byte</em> offsets, not <em>code point</em> offsets. When you do: </p>
|
||||
<div class="codehilite"><pre><span class="n">someString</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
|
||||
<div class="codehilite"><pre><span></span><span class="n">someString</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>That means “get the code point starting at <em>byte</em> three”, not “get the third
|
||||
code point in the string”. This sounds scary, but keep in mind that the methods
|
||||
on strings <em>return</em> byte indexes too. So, for example, this does what you want: </p>
|
||||
<div class="codehilite"><pre><span class="k">var</span> <span class="n">metalBand</span> <span class="o">=</span> <span class="s">"Fäcëhämmër"</span>
|
||||
<div class="codehilite"><pre><span></span><span class="k">var</span> <span class="n">metalBand</span> <span class="o">=</span> <span class="s">"Fäcëhämmër"</span>
|
||||
<span class="k">var</span> <span class="n">hPosition</span> <span class="o">=</span> <span class="n">metalBand</span><span class="o">.</span><span class="n">indexOf</span><span class="p">(</span><span class="s">"h"</span><span class="p">)</span>
|
||||
<span class="vg">System</span><span class="o">.</span><span class="n">print</span><span class="p">(</span><span class="n">metalBand</span><span class="p">[</span><span class="n">hPosition</span><span class="p">])</span> <span class="output">h</span>
|
||||
</pre></div>
|
||||
@ -126,7 +126,7 @@ ignores any UTF-8 encoding and works directly at the byte level. </p>
|
||||
<h2>Static Methods <a href="#static-methods" name="static-methods" class="header-anchor">#</a></h2>
|
||||
<h3>String.<strong>fromCodePoint</strong>(codePoint) <a href="#string.fromcodepoint(codepoint)" name="string.fromcodepoint(codepoint)" class="header-anchor">#</a></h3>
|
||||
<p>Creates a new string containing the UTF-8 encoding of <code>codePoint</code>. </p>
|
||||
<div class="codehilite"><pre><span class="vg">String</span><span class="o">.</span><span class="n">fromCodePoint</span><span class="p">(</span><span class="mi">8225</span><span class="p">)</span> <span class="output">‡</span>
|
||||
<div class="codehilite"><pre><span></span><span class="vg">String</span><span class="o">.</span><span class="n">fromCodePoint</span><span class="p">(</span><span class="mi">8225</span><span class="p">)</span> <span class="output">‡</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -138,7 +138,7 @@ ignores any UTF-8 encoding and works directly at the byte level. </p>
|
||||
the string and ignore any UTF-8 encoding. In addition to the normal sequence
|
||||
methods, the returned object also has a subscript operator that can be used to
|
||||
directly index bytes. </p>
|
||||
<div class="codehilite"><pre><span class="vg">System</span><span class="o">.</span><span class="n">print</span><span class="p">(</span><span class="s">"hello"</span><span class="o">.</span><span class="n">bytes</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="output">101 (for "e")</span>
|
||||
<div class="codehilite"><pre><span></span><span class="vg">System</span><span class="o">.</span><span class="n">print</span><span class="p">(</span><span class="s">"hello"</span><span class="o">.</span><span class="n">bytes</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="output">101 (for "e")</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -150,7 +150,7 @@ the string, and runs in constant time instead. </p>
|
||||
code points of the string <em>as numbers</em>. Iteration and subscripting work similar
|
||||
to the string itself. The difference is that instead of returning
|
||||
single-character strings, this returns the numeric code point values. </p>
|
||||
<div class="codehilite"><pre><span class="k">var</span> <span class="n">string</span> <span class="o">=</span> <span class="s">"(ᵔᴥᵔ)"</span>
|
||||
<div class="codehilite"><pre><span></span><span class="k">var</span> <span class="n">string</span> <span class="o">=</span> <span class="s">"(ᵔᴥᵔ)"</span>
|
||||
<span class="vg">System</span><span class="o">.</span><span class="n">print</span><span class="p">(</span><span class="n">string</span><span class="o">.</span><span class="n">codePoints</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="output">40 (for "(")</span>
|
||||
<span class="vg">System</span><span class="o">.</span><span class="n">print</span><span class="p">(</span><span class="n">string</span><span class="o">.</span><span class="n">codePoints</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span> <span class="output">7461 (for "ᴥ")</span>
|
||||
</pre></div>
|
||||
@ -158,7 +158,7 @@ single-character strings, this returns the numeric code point values. </p>
|
||||
|
||||
<p>If the byte at <code>index</code> does not begin a valid UTF-8 sequence, or the end of the
|
||||
string is reached before the sequence is complete, returns <code>-1</code>. </p>
|
||||
<div class="codehilite"><pre><span class="k">var</span> <span class="n">string</span> <span class="o">=</span> <span class="s">"(ᵔᴥᵔ)"</span>
|
||||
<div class="codehilite"><pre><span></span><span class="k">var</span> <span class="n">string</span> <span class="o">=</span> <span class="s">"(ᵔᴥᵔ)"</span>
|
||||
<span class="vg">System</span><span class="o">.</span><span class="n">print</span><span class="p">(</span><span class="n">string</span><span class="o">.</span><span class="n">codePoints</span><span class="p">[</span><span class="mi">2</span><span class="p">])</span> <span class="output">-1 (in the middle of "ᵔ")</span>
|
||||
</pre></div>
|
||||
|
||||
@ -179,10 +179,31 @@ count as well. </p>
|
||||
<p>Returns the index of the first byte matching <code>search</code> in the string or <code>-1</code> if
|
||||
<code>search</code> was not found. </p>
|
||||
<p>It is a runtime error if <code>search</code> is not a string. </p>
|
||||
<h3><strong>indexOf</strong>(search, start) <a href="#indexof(search,-start)" name="indexof(search,-start)" class="header-anchor">#</a></h3>
|
||||
<p>Returns the index of the first byte matching <code>search</code> in the string or <code>-1</code> if
|
||||
<code>search</code> was not found, starting a byte offset <code>start</code>. The start can be
|
||||
negative to count backwards from the end of the string. </p>
|
||||
<p>It is a runtime error if <code>search</code> is not a string or <code>start</code> is not an integer
|
||||
index within the string’s byte length. </p>
|
||||
<h3><strong>split</strong>(separator) <a href="#split(separator)" name="split(separator)" class="header-anchor">#</a></h3>
|
||||
<p>Returns a list of one or more strings separated by <code>separator</code>. </p>
|
||||
<div class="codehilite"><pre><span></span><span class="k">var</span> <span class="n">string</span> <span class="o">=</span> <span class="s">"abc abc abc"</span>
|
||||
<span class="vg">System</span><span class="o">.</span><span class="n">print</span><span class="p">(</span><span class="n">string</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">" "</span><span class="p">))</span> <span class="output">[abc, abc, abc]</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<p>It is a runtime error if <code>separator</code> is not a string or is an empty string. </p>
|
||||
<h3><strong>replace</strong>(old, swap) <a href="#replace(old,-swap)" name="replace(old,-swap)" class="header-anchor">#</a></h3>
|
||||
<p>Returns a new string with all occurences of <code>old</code> replaced with <code>swap</code>. </p>
|
||||
<div class="codehilite"><pre><span></span><span class="k">var</span> <span class="n">string</span> <span class="o">=</span> <span class="s">"abc abc abc"</span>
|
||||
<span class="vg">System</span><span class="o">.</span><span class="n">print</span><span class="p">(</span><span class="n">string</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">" "</span><span class="p">,</span> <span class="s">""</span><span class="p">))</span> <span class="output">abcabcabc</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
<h3><strong>iterate</strong>(iterator), <strong>iteratorValue</strong>(iterator) <a href="#iterate(iterator),-iteratorvalue(iterator)" name="iterate(iterator),-iteratorvalue(iterator)" class="header-anchor">#</a></h3>
|
||||
<p>Implements the <a href="../control-flow.html#the-iterator-protocol">iterator protocol</a>
|
||||
<p>Implements the <a href="../../control-flow.html#the-iterator-protocol">iterator protocol</a>
|
||||
for iterating over the <em>code points</em> in the string: </p>
|
||||
<div class="codehilite"><pre><span class="k">var</span> <span class="n">codePoints</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<div class="codehilite"><pre><span></span><span class="k">var</span> <span class="n">codePoints</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">for</span> <span class="p">(</span><span class="err">c</span> <span class="k">in</span> <span class="s">"(ᵔᴥᵔ)"</span><span class="p">)</span> <span class="p">{</span>
|
||||
<span class="n">codePoints</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="err">c</span><span class="p">)</span>
|
||||
<span class="p">}</span>
|
||||
@ -205,7 +226,7 @@ those too, one byte at a time. </p>
|
||||
<p>Check if the string is not equal to <code>other</code>. </p>
|
||||
<h3><strong>[</strong>index<strong>]</strong> operator <a href="#[index]-operator" name="[index]-operator" class="header-anchor">#</a></h3>
|
||||
<p>Returns a string containing the code point starting at byte <code>index</code>. </p>
|
||||
<div class="codehilite"><pre><span class="vg">System</span><span class="o">.</span><span class="n">print</span><span class="p">(</span><span class="s">"ʕ•ᴥ•ʔ"</span><span class="p">[</span><span class="mi">5</span><span class="p">])</span> <span class="output">ᴥ</span>
|
||||
<div class="codehilite"><pre><span></span><span class="vg">System</span><span class="o">.</span><span class="n">print</span><span class="p">(</span><span class="s">"ʕ•ᴥ•ʔ"</span><span class="p">[</span><span class="mi">5</span><span class="p">])</span> <span class="output">ᴥ</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
@ -213,7 +234,7 @@ those too, one byte at a time. </p>
|
||||
bear’s nose. </p>
|
||||
<p>If <code>index</code> points into the middle of a UTF-8 sequence or at otherwise invalid
|
||||
UTF-8, this returns a one-byte string containing the byte at that index: </p>
|
||||
<div class="codehilite"><pre><span class="vg">System</span><span class="o">.</span><span class="n">print</span><span class="p">(</span><span class="s">"I ♥ NY"</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span> <span class="output">(one-byte string [153])</span>
|
||||
<div class="codehilite"><pre><span></span><span class="vg">System</span><span class="o">.</span><span class="n">print</span><span class="p">(</span><span class="s">"I ♥ NY"</span><span class="p">[</span><span class="mi">3</span><span class="p">])</span> <span class="output">(one-byte string [153])</span>
|
||||
</pre></div>
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user