Files
Nim/unicode.html
github-actions[bot] ef3d9e7b38 Deploy to GitHub pages
2025-12-28 15:55:52 +00:00

1951 lines
254 KiB
HTML
Raw Permalink 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.

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>std/unicode</title>
<!-- Google fonts -->
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
<!-- Favicon -->
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
<!-- CSS -->
<link rel="stylesheet" type="text/css" href="nimdoc.out.css?v=2.3.1">
<!-- JS -->
<script type="text/javascript" src="dochack.js?v=2.3.1"></script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">std/unicode</h1>
<div class="row">
<div class="three columns">
<div class="theme-select-wrapper">
<label for="theme-select">Theme:&nbsp;</label>
<select id="theme-select" onchange="setTheme(this.value)">
<option value="auto">🌗 Match OS</option>
<option value="dark">🌑 Dark</option>
<option value="light">🌕 Light</option>
</select>
</div>
<div id="global-links">
<ul class="simple-boot">
<li><a href="manual.html">Manual</a></li>
<li><a href="lib.html">Standard library</a></li>
<li> <a id="indexLink" href="theindex.html">Index</a></li>
<li><a href="compiler/theindex.html">Compiler docs</a></li>
<li><a href="https://nim-lang.github.io/fusion/theindex.html">Fusion docs</a></li>
<li><a href="https://nim-lang.github.io/Nim/">devel</a>, <a href="https://nim-lang.org/documentation.html">stable</a></li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="search" id="searchInput"
oninput="search()" />
</div>
<ul class="simple simple-toc" id="toc-list">
<li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#Rune" title="Rune = distinct RuneImpl">Rune</a></li>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">$
<li><a class="reference" href="#%24%2CRune" title="`$`(rune: Rune): string">`$`(rune: Rune): string</a></li>
<li><a class="reference" href="#%24%2Cseq%5BRune%5D" title="`$`(runes: seq[Rune]): string">`$`(runes: seq[Rune]): string</a></li>
</ul>
<ul class="simple nested-toc-section"><%
<li><a class="reference" href="#%3C%25%2CRune%2CRune" title="`&lt;%`(a, b: Rune): bool">`&lt;%`(a, b: Rune): bool</a></li>
</ul>
<ul class="simple nested-toc-section"><=%
<li><a class="reference" href="#%3C%3D%25%2CRune%2CRune" title="`&lt;=%`(a, b: Rune): bool">`&lt;=%`(a, b: Rune): bool</a></li>
</ul>
<ul class="simple nested-toc-section">==
<li><a class="reference" href="#%3D%3D%2CRune%2CRune" title="`==`(a, b: Rune): bool">`==`(a, b: Rune): bool</a></li>
</ul>
<ul class="simple nested-toc-section">add
<li><a class="reference" href="#add%2Cstring%2CRune" title="add(s: var string; c: Rune)">add(s: var string; c: Rune)</a></li>
</ul>
<ul class="simple nested-toc-section">align
<li><a class="reference" href="#align%2CopenArray%5Bchar%5D%2CNatural" title="align(s: openArray[char]; count: Natural; padding = ' '.Rune): string">align(s: openArray[char]; count: Natural; padding = ' '.Rune): string</a></li>
<li><a class="reference" href="#align%2Cstring%2CNatural" title="align(s: string; count: Natural; padding = ' '.Rune): string">align(s: string; count: Natural; padding = ' '.Rune): string</a></li>
</ul>
<ul class="simple nested-toc-section">alignLeft
<li><a class="reference" href="#alignLeft%2CopenArray%5Bchar%5D%2CNatural" title="alignLeft(s: openArray[char]; count: Natural; padding = ' '.Rune): string">alignLeft(s: openArray[char]; count: Natural; padding = ' '.Rune): string</a></li>
<li><a class="reference" href="#alignLeft%2Cstring%2CNatural" title="alignLeft(s: string; count: Natural; padding = ' '.Rune): string">alignLeft(s: string; count: Natural; padding = ' '.Rune): string</a></li>
</ul>
<ul class="simple nested-toc-section">capitalize
<li><a class="reference" href="#capitalize%2CopenArray%5Bchar%5D" title="capitalize(s: openArray[char]): string">capitalize(s: openArray[char]): string</a></li>
<li><a class="reference" href="#capitalize%2Cstring" title="capitalize(s: string): string">capitalize(s: string): string</a></li>
</ul>
<ul class="simple nested-toc-section">cmpRunesIgnoreCase
<li><a class="reference" href="#cmpRunesIgnoreCase%2CopenArray%5Bchar%5D%2CopenArray%5Bchar%5D" title="cmpRunesIgnoreCase(a, b: openArray[char]): int">cmpRunesIgnoreCase(a, b: openArray[char]): int</a></li>
<li><a class="reference" href="#cmpRunesIgnoreCase%2Cstring%2Cstring" title="cmpRunesIgnoreCase(a, b: string): int">cmpRunesIgnoreCase(a, b: string): int</a></li>
</ul>
<ul class="simple nested-toc-section">graphemeLen
<li><a class="reference" href="#graphemeLen%2CopenArray%5Bchar%5D%2CNatural" title="graphemeLen(s: openArray[char]; i: Natural): Natural">graphemeLen(s: openArray[char]; i: Natural): Natural</a></li>
<li><a class="reference" href="#graphemeLen%2Cstring%2CNatural" title="graphemeLen(s: string; i: Natural): Natural">graphemeLen(s: string; i: Natural): Natural</a></li>
</ul>
<ul class="simple nested-toc-section">isAlpha
<li><a class="reference" href="#isAlpha%2CRune" title="isAlpha(c: Rune): bool">isAlpha(c: Rune): bool</a></li>
<li><a class="reference" href="#isAlpha%2CopenArray%5Bchar%5D" title="isAlpha(s: openArray[char]): bool">isAlpha(s: openArray[char]): bool</a></li>
<li><a class="reference" href="#isAlpha%2Cstring" title="isAlpha(s: string): bool">isAlpha(s: string): bool</a></li>
</ul>
<ul class="simple nested-toc-section">isCombining
<li><a class="reference" href="#isCombining%2CRune" title="isCombining(c: Rune): bool">isCombining(c: Rune): bool</a></li>
</ul>
<ul class="simple nested-toc-section">isLower
<li><a class="reference" href="#isLower%2CRune" title="isLower(c: Rune): bool">isLower(c: Rune): bool</a></li>
</ul>
<ul class="simple nested-toc-section">isSpace
<li><a class="reference" href="#isSpace%2CopenArray%5Bchar%5D" title="isSpace(s: openArray[char]): bool">isSpace(s: openArray[char]): bool</a></li>
<li><a class="reference" href="#isSpace%2Cstring" title="isSpace(s: string): bool">isSpace(s: string): bool</a></li>
</ul>
<ul class="simple nested-toc-section">isTitle
<li><a class="reference" href="#isTitle%2CRune" title="isTitle(c: Rune): bool">isTitle(c: Rune): bool</a></li>
</ul>
<ul class="simple nested-toc-section">isUpper
<li><a class="reference" href="#isUpper%2CRune" title="isUpper(c: Rune): bool">isUpper(c: Rune): bool</a></li>
</ul>
<ul class="simple nested-toc-section">isWhiteSpace
<li><a class="reference" href="#isWhiteSpace%2CRune" title="isWhiteSpace(c: Rune): bool">isWhiteSpace(c: Rune): bool</a></li>
</ul>
<ul class="simple nested-toc-section">lastRune
<li><a class="reference" href="#lastRune%2CopenArray%5Bchar%5D%2Cint" title="lastRune(s: openArray[char]; last: int): (Rune, int)">lastRune(s: openArray[char]; last: int): (Rune, int)</a></li>
<li><a class="reference" href="#lastRune%2Cstring%2Cint" title="lastRune(s: string; last: int): (Rune, int)">lastRune(s: string; last: int): (Rune, int)</a></li>
</ul>
<ul class="simple nested-toc-section">repeat
<li><a class="reference" href="#repeat%2CRune%2CNatural" title="repeat(c: Rune; count: Natural): string">repeat(c: Rune; count: Natural): string</a></li>
</ul>
<ul class="simple nested-toc-section">reversed
<li><a class="reference" href="#reversed%2CopenArray%5Bchar%5D" title="reversed(s: openArray[char]): string">reversed(s: openArray[char]): string</a></li>
<li><a class="reference" href="#reversed%2Cstring" title="reversed(s: string): string">reversed(s: string): string</a></li>
</ul>
<ul class="simple nested-toc-section">runeAt
<li><a class="reference" href="#runeAt%2CopenArray%5Bchar%5D%2CNatural" title="runeAt(s: openArray[char]; i: Natural): Rune">runeAt(s: openArray[char]; i: Natural): Rune</a></li>
<li><a class="reference" href="#runeAt%2Cstring%2CNatural" title="runeAt(s: string; i: Natural): Rune">runeAt(s: string; i: Natural): Rune</a></li>
</ul>
<ul class="simple nested-toc-section">runeAtPos
<li><a class="reference" href="#runeAtPos%2CopenArray%5Bchar%5D%2Cint" title="runeAtPos(s: openArray[char]; pos: int): Rune">runeAtPos(s: openArray[char]; pos: int): Rune</a></li>
<li><a class="reference" href="#runeAtPos%2Cstring%2Cint" title="runeAtPos(s: string; pos: int): Rune">runeAtPos(s: string; pos: int): Rune</a></li>
</ul>
<ul class="simple nested-toc-section">runeLen
<li><a class="reference" href="#runeLen%2CopenArray%5Bchar%5D" title="runeLen(s: openArray[char]): int">runeLen(s: openArray[char]): int</a></li>
<li><a class="reference" href="#runeLen%2Cstring" title="runeLen(s: string): int">runeLen(s: string): int</a></li>
</ul>
<ul class="simple nested-toc-section">runeLenAt
<li><a class="reference" href="#runeLenAt%2CopenArray%5Bchar%5D%2CNatural" title="runeLenAt(s: openArray[char]; i: Natural): int">runeLenAt(s: openArray[char]; i: Natural): int</a></li>
<li><a class="reference" href="#runeLenAt%2Cstring%2CNatural" title="runeLenAt(s: string; i: Natural): int">runeLenAt(s: string; i: Natural): int</a></li>
</ul>
<ul class="simple nested-toc-section">runeOffset
<li><a class="reference" href="#runeOffset%2CopenArray%5Bchar%5D%2CNatural%2CNatural" title="runeOffset(s: openArray[char]; pos: Natural; start: Natural = 0): int">runeOffset(s: openArray[char]; pos: Natural; start: Natural = 0): int</a></li>
<li><a class="reference" href="#runeOffset%2Cstring%2CNatural%2CNatural" title="runeOffset(s: string; pos: Natural; start: Natural = 0): int">runeOffset(s: string; pos: Natural; start: Natural = 0): int</a></li>
</ul>
<ul class="simple nested-toc-section">runeReverseOffset
<li><a class="reference" href="#runeReverseOffset%2CopenArray%5Bchar%5D%2CPositive" title="runeReverseOffset(s: openArray[char]; rev: Positive): (int, int)">runeReverseOffset(s: openArray[char]; rev: Positive): (int, int)</a></li>
<li><a class="reference" href="#runeReverseOffset%2Cstring%2CPositive" title="runeReverseOffset(s: string; rev: Positive): (int, int)">runeReverseOffset(s: string; rev: Positive): (int, int)</a></li>
</ul>
<ul class="simple nested-toc-section">runeStrAtPos
<li><a class="reference" href="#runeStrAtPos%2CopenArray%5Bchar%5D%2CNatural" title="runeStrAtPos(s: openArray[char]; pos: Natural): string">runeStrAtPos(s: openArray[char]; pos: Natural): string</a></li>
<li><a class="reference" href="#runeStrAtPos%2Cstring%2CNatural" title="runeStrAtPos(s: string; pos: Natural): string">runeStrAtPos(s: string; pos: Natural): string</a></li>
</ul>
<ul class="simple nested-toc-section">runeSubStr
<li><a class="reference" href="#runeSubStr%2CopenArray%5Bchar%5D%2Cint%2Cint" title="runeSubStr(s: openArray[char]; pos: int; len: int = int.high): string">runeSubStr(s: openArray[char]; pos: int; len: int = int.high): string</a></li>
<li><a class="reference" href="#runeSubStr%2Cstring%2Cint%2Cint" title="runeSubStr(s: string; pos: int; len: int = int.high): string">runeSubStr(s: string; pos: int; len: int = int.high): string</a></li>
</ul>
<ul class="simple nested-toc-section">size
<li><a class="reference" href="#size%2CRune" title="size(r: Rune): int">size(r: Rune): int</a></li>
</ul>
<ul class="simple nested-toc-section">split
<li><a class="reference" href="#split%2CopenArray%5Bchar%5D%2CRune%2Cint" title="split(s: openArray[char]; sep: Rune; maxsplit: int = -1): seq[string]">split(s: openArray[char]; sep: Rune; maxsplit: int = -1): seq[string]</a></li>
<li><a class="reference" href="#split%2CopenArray%5Bchar%5D%2CopenArray%5BRune%5D%2Cint" title="split(s: openArray[char]; seps: openArray[Rune] = unicodeSpaces;
maxsplit: int = -1): seq[string]">split(s: openArray[char]; seps: openArray[Rune] = unicodeSpaces;
maxsplit: int = -1): seq[string]</a></li>
<li><a class="reference" href="#split%2Cstring%2CRune%2Cint" title="split(s: string; sep: Rune; maxsplit: int = -1): seq[string]">split(s: string; sep: Rune; maxsplit: int = -1): seq[string]</a></li>
<li><a class="reference" href="#split%2Cstring%2CopenArray%5BRune%5D%2Cint" title="split(s: string; seps: openArray[Rune] = unicodeSpaces; maxsplit: int = -1): seq[
string]">split(s: string; seps: openArray[Rune] = unicodeSpaces; maxsplit: int = -1): seq[
string]</a></li>
</ul>
<ul class="simple nested-toc-section">splitWhitespace
<li><a class="reference" href="#splitWhitespace%2CopenArray%5Bchar%5D" title="splitWhitespace(s: openArray[char]): seq[string]">splitWhitespace(s: openArray[char]): seq[string]</a></li>
<li><a class="reference" href="#splitWhitespace%2Cstring" title="splitWhitespace(s: string): seq[string]">splitWhitespace(s: string): seq[string]</a></li>
</ul>
<ul class="simple nested-toc-section">strip
<li><a class="reference" href="#strip%2CopenArray%5Bchar%5D%2CopenArray%5BRune%5D" title="strip(s: openArray[char]; leading = true; trailing = true;
runes: openArray[Rune] = unicodeSpaces): string">strip(s: openArray[char]; leading = true; trailing = true;
runes: openArray[Rune] = unicodeSpaces): string</a></li>
<li><a class="reference" href="#strip%2Cstring%2CopenArray%5BRune%5D" title="strip(s: string; leading = true; trailing = true;
runes: openArray[Rune] = unicodeSpaces): string">strip(s: string; leading = true; trailing = true;
runes: openArray[Rune] = unicodeSpaces): string</a></li>
</ul>
<ul class="simple nested-toc-section">swapCase
<li><a class="reference" href="#swapCase%2CopenArray%5Bchar%5D" title="swapCase(s: openArray[char]): string">swapCase(s: openArray[char]): string</a></li>
<li><a class="reference" href="#swapCase%2Cstring" title="swapCase(s: string): string">swapCase(s: string): string</a></li>
</ul>
<ul class="simple nested-toc-section">title
<li><a class="reference" href="#title%2CopenArray%5Bchar%5D" title="title(s: openArray[char]): string">title(s: openArray[char]): string</a></li>
<li><a class="reference" href="#title%2Cstring" title="title(s: string): string">title(s: string): string</a></li>
</ul>
<ul class="simple nested-toc-section">toLower
<li><a class="reference" href="#toLower%2CRune" title="toLower(c: Rune): Rune">toLower(c: Rune): Rune</a></li>
<li><a class="reference" href="#toLower%2CopenArray%5Bchar%5D" title="toLower(s: openArray[char]): string">toLower(s: openArray[char]): string</a></li>
<li><a class="reference" href="#toLower%2Cstring" title="toLower(s: string): string">toLower(s: string): string</a></li>
</ul>
<ul class="simple nested-toc-section">toRunes
<li><a class="reference" href="#toRunes%2CopenArray%5Bchar%5D" title="toRunes(s: openArray[char]): seq[Rune]">toRunes(s: openArray[char]): seq[Rune]</a></li>
<li><a class="reference" href="#toRunes%2Cstring" title="toRunes(s: string): seq[Rune]">toRunes(s: string): seq[Rune]</a></li>
</ul>
<ul class="simple nested-toc-section">toTitle
<li><a class="reference" href="#toTitle%2CRune" title="toTitle(c: Rune): Rune">toTitle(c: Rune): Rune</a></li>
</ul>
<ul class="simple nested-toc-section">toUpper
<li><a class="reference" href="#toUpper%2CRune" title="toUpper(c: Rune): Rune">toUpper(c: Rune): Rune</a></li>
<li><a class="reference" href="#toUpper%2CopenArray%5Bchar%5D" title="toUpper(s: openArray[char]): string">toUpper(s: openArray[char]): string</a></li>
<li><a class="reference" href="#toUpper%2Cstring" title="toUpper(s: string): string">toUpper(s: string): string</a></li>
</ul>
<ul class="simple nested-toc-section">toUTF8
<li><a class="reference" href="#toUTF8%2CRune" title="toUTF8(c: Rune): string">toUTF8(c: Rune): string</a></li>
</ul>
<ul class="simple nested-toc-section">translate
<li><a class="reference" href="#translate%2CopenArray%5Bchar%5D%2Cproc%28string%29" title="translate(s: openArray[char]; replacements: proc (key: string): string): string">translate(s: openArray[char]; replacements: proc (key: string): string): string</a></li>
<li><a class="reference" href="#translate%2Cstring%2Cproc%28string%29" title="translate(s: string; replacements: proc (key: string): string): string">translate(s: string; replacements: proc (key: string): string): string</a></li>
</ul>
<ul class="simple nested-toc-section">validateUtf8
<li><a class="reference" href="#validateUtf8%2CopenArray%5Bchar%5D" title="validateUtf8(s: openArray[char]): int">validateUtf8(s: openArray[char]): int</a></li>
<li><a class="reference" href="#validateUtf8%2Cstring" title="validateUtf8(s: string): int">validateUtf8(s: string): int</a></li>
</ul>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#15" id="65">Iterators</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">runes
<li><a class="reference" href="#runes.i%2CopenArray%5Bchar%5D" title="runes(s: openArray[char]): Rune">runes(s: openArray[char]): Rune</a></li>
<li><a class="reference" href="#runes.i%2Cstring" title="runes(s: string): Rune">runes(s: string): Rune</a></li>
</ul>
<ul class="simple nested-toc-section">split
<li><a class="reference" href="#split.i%2CopenArray%5Bchar%5D%2CRune%2Cint" title="split(s: openArray[char]; sep: Rune; maxsplit: int = -1): string">split(s: openArray[char]; sep: Rune; maxsplit: int = -1): string</a></li>
<li><a class="reference" href="#split.i%2CopenArray%5Bchar%5D%2CopenArray%5BRune%5D%2Cint" title="split(s: openArray[char]; seps: openArray[Rune] = unicodeSpaces;
maxsplit: int = -1): string">split(s: openArray[char]; seps: openArray[Rune] = unicodeSpaces;
maxsplit: int = -1): string</a></li>
<li><a class="reference" href="#split.i%2Cstring%2CRune%2Cint" title="split(s: string; sep: Rune; maxsplit: int = -1): string">split(s: string; sep: Rune; maxsplit: int = -1): string</a></li>
<li><a class="reference" href="#split.i%2Cstring%2CopenArray%5BRune%5D%2Cint" title="split(s: string; seps: openArray[Rune] = unicodeSpaces; maxsplit: int = -1): string">split(s: string; seps: openArray[Rune] = unicodeSpaces; maxsplit: int = -1): string</a></li>
</ul>
<ul class="simple nested-toc-section">splitWhitespace
<li><a class="reference" href="#splitWhitespace.i%2CopenArray%5Bchar%5D" title="splitWhitespace(s: openArray[char]): string">splitWhitespace(s: openArray[char]): string</a></li>
<li><a class="reference" href="#splitWhitespace.i%2Cstring" title="splitWhitespace(s: string): string">splitWhitespace(s: string): string</a></li>
</ul>
<ul class="simple nested-toc-section">utf8
<li><a class="reference" href="#utf8.i%2CopenArray%5Bchar%5D" title="utf8(s: openArray[char]): string">utf8(s: openArray[char]): string</a></li>
<li><a class="reference" href="#utf8.i%2Cstring" title="utf8(s: string): string">utf8(s: string): string</a></li>
</ul>
</ul>
</details>
</li>
<li>
<details open>
<summary><a class="reference reference-toplevel" href="#18" id="68">Templates</a></summary>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">fastRuneAt
<li><a class="reference" href="#fastRuneAt.t%2C%2Cint%2Cuntyped" title="fastRuneAt(s: openArray[char] or string; i: int; result: untyped; doInc = true)">fastRuneAt(s: openArray[char] or string; i: int; result: untyped; doInc = true)</a></li>
</ul>
<ul class="simple nested-toc-section">fastToUTF8Copy
<li><a class="reference" href="#fastToUTF8Copy.t%2CRune%2Cstring%2Cint" title="fastToUTF8Copy(c: Rune; s: var string; pos: int; doInc = true)">fastToUTF8Copy(c: Rune; s: var string; pos: int; doInc = true)</a></li>
</ul>
</ul>
</details>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
<div id="tocRoot"></div>
<p class="module-desc"><p>This module provides support to handle the Unicode UTF-8 encoding.</p>
<p>There are no specialized <tt class="docutils literal"><span class="pre">insert</span></tt>, <tt class="docutils literal"><span class="pre">delete</span></tt>, <tt class="docutils literal"><span class="pre">add</span></tt> and <tt class="docutils literal"><span class="pre">contains</span></tt> procedures for <tt class="docutils literal"><span class="pre">seq[Rune]</span></tt> in this module because the generic variants of these procedures in the system module already work with it.</p>
<p>The current version is compatible with Unicode v12.0.0.</p>
<p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="strutils.html">strutils module</a></li>
<li><a class="reference external" href="unidecode.html">unidecode module</a></li>
<li><a class="reference external" href="encodings.html">encodings module</a></li>
</ul>
</p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="strbasics.html">strbasics</a>
</dl>
</div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<div id="Rune">
<dt><pre><a href="unicode.html#Rune"><span class="Identifier">Rune</span></a> <span class="Other">=</span> <span class="Keyword">distinct</span> <span class="Identifier">RuneImpl</span></pre></dt>
<dd>
<p>
Type that can hold a single Unicode code point.</p>
<p>A Rune may be composed with other Runes to a character on the screen. <tt class="docutils literal"><span class="pre"><span class="Identifier">RuneImpl</span></span></tt> is the underlying type used to store Runes, currently <tt class="docutils literal"><span class="pre"><span class="Identifier">int32</span></span></tt>.</p>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L37" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L37" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</dl>
</div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<div id="$-procs-all">
<div id="$,Rune">
<dt><pre><span class="Keyword">proc</span> <a href="#%24%2CRune"><span class="Identifier">`$`</span></a><span class="Other">(</span><span class="Identifier">rune</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>An alias for <a class="reference external" href="#toUTF8,Rune">toUTF8</a>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#validateUtf8,string">validateUtf8 proc</a></li>
<li><a class="reference external" href="#fastToUTF8Copy.t,Rune,string,int">fastToUTF8Copy template</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L290" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L290" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="$,seq[Rune]">
<dt><pre><span class="Keyword">proc</span> <a href="#%24%2Cseq%5BRune%5D"><span class="Identifier">`$`</span></a><span class="Other">(</span><span class="Identifier">runes</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Converts a sequence of Runes to a string.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#toRunes,string">toRunes</a> for a reverse operation</li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span>
<span class="Identifier">someString</span> <span class="Operator">=</span> <span class="StringLit">&quot;öÑ&quot;</span>
<span class="Identifier">someRunes</span> <span class="Operator">=</span> <span class="Identifier">toRunes</span><span class="Punctuation">(</span><span class="Identifier">someString</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Operator">$</span><span class="Identifier">someRunes</span> <span class="Operator">==</span> <span class="Identifier">someString</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L298" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L298" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="&lt;%-procs-all">
<div id="<%,Rune,Rune">
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%25%2CRune%2CRune"><span class="Identifier">`&lt;%`</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Checks if code point of <tt class="docutils literal"><span class="pre"><span class="Identifier">a</span></span></tt> is smaller than code point of <tt class="docutils literal"><span class="pre"><span class="Identifier">b</span></span></tt>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span>
<span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;ú&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span>
<span class="Identifier">b</span> <span class="Operator">=</span> <span class="StringLit">&quot;ü&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span> <span class="Operator">&lt;%</span> <span class="Identifier">b</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L451" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L451" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="&lt;=%-procs-all">
<div id="<=%,Rune,Rune">
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%25%2CRune%2CRune"><span class="Identifier">`&lt;=%`</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Checks if code point of <tt class="docutils literal"><span class="pre"><span class="Identifier">a</span></span></tt> is smaller or equal to code point of <tt class="docutils literal"><span class="pre"><span class="Identifier">b</span></span></tt>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span>
<span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;ú&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span>
<span class="Identifier">b</span> <span class="Operator">=</span> <span class="StringLit">&quot;ü&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span> <span class="Operator">&lt;=%</span> <span class="Identifier">b</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L442" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L442" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="==-procs-all">
<div id="==,Rune,Rune">
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2CRune%2CRune"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Checks if two runes are equal.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L460" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L460" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="add-procs-all">
<div id="add,string,Rune">
<dt><pre><span class="Keyword">proc</span> <a href="#add%2Cstring%2CRune"><span class="Identifier">add</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">c</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Adds a rune <tt class="docutils literal"><span class="pre">c</span></tt> to a string <tt class="docutils literal"><span class="pre">s</span></tt>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">s</span> <span class="Operator">=</span> <span class="StringLit">&quot;abc&quot;</span>
<span class="Keyword">let</span> <span class="Identifier">c</span> <span class="Operator">=</span> <span class="StringLit">&quot;ä&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span>
<span class="Identifier">s</span><span class="Operator">.</span><span class="Identifier">add</span><span class="Punctuation">(</span><span class="Identifier">c</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">s</span> <span class="Operator">==</span> <span class="StringLit">&quot;abcä&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L279" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L279" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="align-procs-all">
<div id="align,openArray[char],Natural">
<dt><pre><span class="Keyword">proc</span> <a href="#align%2CopenArray%5Bchar%5D%2CNatural"><span class="Identifier">align</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">count</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">;</span> <span class="Identifier">padding</span> <span class="Other">=</span> <span class="CharLit">' '</span><span class="Other">.</span><span class="Identifier">Rune</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.
<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nucAlignString&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Aligns a unicode string <tt class="docutils literal"><span class="pre">s</span></tt> with <tt class="docutils literal"><span class="pre">padding</span></tt>, so that it has a rune-length of <tt class="docutils literal"><span class="pre">count</span></tt>.</p>
<p><tt class="docutils literal"><span class="pre">padding</span></tt> characters (by default spaces) are added before <tt class="docutils literal"><span class="pre">s</span></tt> resulting in right alignment. If <tt class="docutils literal"><span class="pre">s.runelen &gt;= count</span></tt>, no spaces are added and <tt class="docutils literal"><span class="pre">s</span></tt> is returned unchanged. If you need to left align a string use the <a class="reference external" href="#alignLeft,string,Natural">alignLeft proc</a>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span> <span class="Identifier">align</span><span class="Punctuation">(</span><span class="StringLit">&quot;abc&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot; abc&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">align</span><span class="Punctuation">(</span><span class="StringLit">&quot;a&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;a&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">align</span><span class="Punctuation">(</span><span class="StringLit">&quot;1232&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot; 1232&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">align</span><span class="Punctuation">(</span><span class="StringLit">&quot;1232&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="CharLit">'#'</span><span class="Operator">.</span><span class="Identifier">Rune</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;##1232&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">align</span><span class="Punctuation">(</span><span class="StringLit">&quot;Åge&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot; Åge&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">align</span><span class="Punctuation">(</span><span class="StringLit">&quot;×&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">,</span> <span class="CharLit">'_'</span><span class="Operator">.</span><span class="Identifier">Rune</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;___×&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1115" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1115" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="align,string,Natural">
<dt><pre><span class="Keyword">proc</span> <a href="#align%2Cstring%2CNatural"><span class="Identifier">align</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">count</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">;</span> <span class="Identifier">padding</span> <span class="Other">=</span> <span class="CharLit">' '</span><span class="Other">.</span><span class="Identifier">Rune</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.
<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Aligns a unicode string <tt class="docutils literal"><span class="pre">s</span></tt> with <tt class="docutils literal"><span class="pre">padding</span></tt>, so that it has a rune-length of <tt class="docutils literal"><span class="pre">count</span></tt>.</p>
<p><tt class="docutils literal"><span class="pre">padding</span></tt> characters (by default spaces) are added before <tt class="docutils literal"><span class="pre">s</span></tt> resulting in right alignment. If <tt class="docutils literal"><span class="pre">s.runelen &gt;= count</span></tt>, no spaces are added and <tt class="docutils literal"><span class="pre">s</span></tt> is returned unchanged. If you need to left align a string use the <a class="reference external" href="#alignLeft,string,Natural">alignLeft proc</a>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span> <span class="Identifier">align</span><span class="Punctuation">(</span><span class="StringLit">&quot;abc&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot; abc&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">align</span><span class="Punctuation">(</span><span class="StringLit">&quot;a&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;a&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">align</span><span class="Punctuation">(</span><span class="StringLit">&quot;1232&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot; 1232&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">align</span><span class="Punctuation">(</span><span class="StringLit">&quot;1232&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="CharLit">'#'</span><span class="Operator">.</span><span class="Identifier">Rune</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;##1232&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">align</span><span class="Punctuation">(</span><span class="StringLit">&quot;Åge&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot; Åge&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">align</span><span class="Punctuation">(</span><span class="StringLit">&quot;×&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">,</span> <span class="CharLit">'_'</span><span class="Operator">.</span><span class="Identifier">Rune</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;___×&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1495" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1495" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="alignLeft-procs-all">
<div id="alignLeft,openArray[char],Natural">
<dt><pre><span class="Keyword">proc</span> <a href="#alignLeft%2CopenArray%5Bchar%5D%2CNatural"><span class="Identifier">alignLeft</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">count</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">;</span> <span class="Identifier">padding</span> <span class="Other">=</span> <span class="CharLit">' '</span><span class="Other">.</span><span class="Identifier">Rune</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.
<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Left-aligns a unicode string <tt class="docutils literal"><span class="pre">s</span></tt> with <tt class="docutils literal"><span class="pre">padding</span></tt>, so that it has a rune-length of <tt class="docutils literal"><span class="pre">count</span></tt>.</p>
<p><tt class="docutils literal"><span class="pre">padding</span></tt> characters (by default spaces) are added after <tt class="docutils literal"><span class="pre">s</span></tt> resulting in left alignment. If <tt class="docutils literal"><span class="pre">s.runelen &gt;= count</span></tt>, no spaces are added and <tt class="docutils literal"><span class="pre">s</span></tt> is returned unchanged. If you need to right align a string use the <a class="reference external" href="#align,string,Natural">align proc</a>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span> <span class="Identifier">alignLeft</span><span class="Punctuation">(</span><span class="StringLit">&quot;abc&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;abc &quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">alignLeft</span><span class="Punctuation">(</span><span class="StringLit">&quot;a&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;a&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">alignLeft</span><span class="Punctuation">(</span><span class="StringLit">&quot;1232&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;1232 &quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">alignLeft</span><span class="Punctuation">(</span><span class="StringLit">&quot;1232&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="CharLit">'#'</span><span class="Operator">.</span><span class="Identifier">Rune</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;1232##&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">alignLeft</span><span class="Punctuation">(</span><span class="StringLit">&quot;Åge&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;Åge &quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">alignLeft</span><span class="Punctuation">(</span><span class="StringLit">&quot;×&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">,</span> <span class="CharLit">'_'</span><span class="Operator">.</span><span class="Identifier">Rune</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;×___&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1142" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1142" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="alignLeft,string,Natural">
<dt><pre><span class="Keyword">proc</span> <a href="#alignLeft%2Cstring%2CNatural"><span class="Identifier">alignLeft</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">count</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">;</span> <span class="Identifier">padding</span> <span class="Other">=</span> <span class="CharLit">' '</span><span class="Other">.</span><span class="Identifier">Rune</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.
<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Left-aligns a unicode string <tt class="docutils literal"><span class="pre">s</span></tt> with <tt class="docutils literal"><span class="pre">padding</span></tt>, so that it has a rune-length of <tt class="docutils literal"><span class="pre">count</span></tt>.</p>
<p><tt class="docutils literal"><span class="pre">padding</span></tt> characters (by default spaces) are added after <tt class="docutils literal"><span class="pre">s</span></tt> resulting in left alignment. If <tt class="docutils literal"><span class="pre">s.runelen &gt;= count</span></tt>, no spaces are added and <tt class="docutils literal"><span class="pre">s</span></tt> is returned unchanged. If you need to right align a string use the <a class="reference external" href="#align,string,Natural">align proc</a>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span> <span class="Identifier">alignLeft</span><span class="Punctuation">(</span><span class="StringLit">&quot;abc&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;abc &quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">alignLeft</span><span class="Punctuation">(</span><span class="StringLit">&quot;a&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;a&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">alignLeft</span><span class="Punctuation">(</span><span class="StringLit">&quot;1232&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;1232 &quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">alignLeft</span><span class="Punctuation">(</span><span class="StringLit">&quot;1232&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="CharLit">'#'</span><span class="Operator">.</span><span class="Identifier">Rune</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;1232##&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">alignLeft</span><span class="Punctuation">(</span><span class="StringLit">&quot;Åge&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;Åge &quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">alignLeft</span><span class="Punctuation">(</span><span class="StringLit">&quot;×&quot;</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">,</span> <span class="CharLit">'_'</span><span class="Operator">.</span><span class="Identifier">Rune</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;×___&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1512" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1512" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="capitalize-procs-all">
<div id="capitalize,openArray[char]">
<dt><pre><span class="Keyword">proc</span> <a href="#capitalize%2CopenArray%5Bchar%5D"><span class="Identifier">capitalize</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span>
<span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Converts the first character of <tt class="docutils literal"><span class="pre">s</span></tt> into an upper-case rune.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">capitalize</span><span class="Punctuation">(</span><span class="StringLit">&quot;βeta&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;Βeta&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L712" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L712" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="capitalize,string">
<dt><pre><span class="Keyword">proc</span> <a href="#capitalize%2Cstring"><span class="Identifier">capitalize</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Converts the first character of <tt class="docutils literal"><span class="pre">s</span></tt> into an upper-case rune.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">capitalize</span><span class="Punctuation">(</span><span class="StringLit">&quot;βeta&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;Βeta&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1328" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1328" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="cmpRunesIgnoreCase-procs-all">
<div id="cmpRunesIgnoreCase,openArray[char],openArray[char]">
<dt><pre><span class="Keyword">proc</span> <a href="#cmpRunesIgnoreCase%2CopenArray%5Bchar%5D%2CopenArray%5Bchar%5D"><span class="Identifier">cmpRunesIgnoreCase</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1&quot;</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Compares two UTF-8 strings and ignores the case. Returns:<p><tt class="docutils literal"><span class="pre"><span class="DecNumber">0</span></span></tt> if a == b<br/><tt class="docutils literal"><span class="pre"><span class="Operator">&lt;</span> <span class="DecNumber">0</span></span></tt> if a &lt; b<br/><tt class="docutils literal"><span class="pre"><span class="Operator">&gt;</span> <span class="DecNumber">0</span></span></tt> if a &gt; b<br/></p>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L844" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L844" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="cmpRunesIgnoreCase,string,string">
<dt><pre><span class="Keyword">proc</span> <a href="#cmpRunesIgnoreCase%2Cstring%2Cstring"><span class="Identifier">cmpRunesIgnoreCase</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Compares two UTF-8 strings and ignores the case. Returns:<p><tt class="docutils literal"><span class="pre"><span class="DecNumber">0</span></span></tt> if a == b<br/><tt class="docutils literal"><span class="pre"><span class="Operator">&lt;</span> <span class="DecNumber">0</span></span></tt> if a &lt; b<br/><tt class="docutils literal"><span class="pre"><span class="Operator">&gt;</span> <span class="DecNumber">0</span></span></tt> if a &gt; b<br/></p>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1387" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1387" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="graphemeLen-procs-all">
<div id="graphemeLen,openArray[char],Natural">
<dt><pre><span class="Keyword">proc</span> <a href="#graphemeLen%2CopenArray%5Bchar%5D%2CNatural"><span class="Identifier">graphemeLen</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
The number of bytes belonging to byte index <tt class="docutils literal"><span class="pre">s[i]</span></tt>, including following combining code units.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;añyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">graphemeLen</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">2</span> <span class="Comment">## ñ</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">graphemeLen</span><span class="Punctuation">(</span><span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">graphemeLen</span><span class="Punctuation">(</span><span class="DecNumber">4</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">2</span> <span class="Comment">## ó</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L901" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L901" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="graphemeLen,string,Natural">
<dt><pre><span class="Keyword">proc</span> <a href="#graphemeLen%2Cstring%2CNatural"><span class="Identifier">graphemeLen</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
The number of bytes belonging to byte index <tt class="docutils literal"><span class="pre">s[i]</span></tt>, including following combining code unit.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;añyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">graphemeLen</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">2</span> <span class="Comment">## ñ</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">graphemeLen</span><span class="Punctuation">(</span><span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">graphemeLen</span><span class="Punctuation">(</span><span class="DecNumber">4</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">2</span> <span class="Comment">## ó</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1406" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1406" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isAlpha-procs-all">
<div id="isAlpha,Rune">
<dt><pre><span class="Keyword">proc</span> <a href="#isAlpha%2CRune"><span class="Identifier">isAlpha</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns true if <tt class="docutils literal"><span class="pre">c</span></tt> is an <em>alpha</em> rune (i.e., a letter).</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#isLower,Rune">isLower proc</a></li>
<li><a class="reference external" href="#isTitle,Rune">isTitle proc</a></li>
<li><a class="reference external" href="#isAlpha,Rune">isAlpha proc</a></li>
<li><a class="reference external" href="#isWhiteSpace,Rune">isWhiteSpace proc</a></li>
<li><a class="reference external" href="#isCombining,Rune">isCombining proc</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L573" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L573" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="isAlpha,openArray[char]">
<dt><pre><span class="Keyword">proc</span> <a href="#isAlpha%2CopenArray%5Bchar%5D"><span class="Identifier">isAlpha</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span>
<span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1Str&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Returns true if <tt class="docutils literal"><span class="pre">s</span></tt> contains all alphabetic runes.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;añyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">isAlpha</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L647" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L647" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="isAlpha,string">
<dt><pre><span class="Keyword">proc</span> <a href="#isAlpha%2Cstring"><span class="Identifier">isAlpha</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Returns true if <tt class="docutils literal"><span class="pre">s</span></tt> contains all alphabetic runes.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;añyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">isAlpha</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1292" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1292" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isCombining-procs-all">
<div id="isCombining,Rune">
<dt><pre><span class="Keyword">proc</span> <a href="#isCombining%2CRune"><span class="Identifier">isCombining</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns true if <tt class="docutils literal"><span class="pre">c</span></tt> is a Unicode combining code unit.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#isLower,Rune">isLower proc</a></li>
<li><a class="reference external" href="#isUpper,Rune">isUpper proc</a></li>
<li><a class="reference external" href="#isTitle,Rune">isTitle proc</a></li>
<li><a class="reference external" href="#isAlpha,Rune">isAlpha proc</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L620" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L620" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isLower-procs-all">
<div id="isLower,Rune">
<dt><pre><span class="Keyword">proc</span> <a href="#isLower%2CRune"><span class="Identifier">isLower</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns true if <tt class="docutils literal"><span class="pre">c</span></tt> is a lower case rune.</p>
<p>If possible, prefer <tt class="docutils literal"><span class="pre">isLower</span></tt> over <tt class="docutils literal"><span class="pre">isUpper</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#toLower,Rune">toLower proc</a></li>
<li><a class="reference external" href="#isUpper,Rune">isUpper proc</a></li>
<li><a class="reference external" href="#isTitle,Rune">isTitle proc</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L531" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L531" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isSpace-procs-all">
<div id="isSpace,openArray[char]">
<dt><pre><span class="Keyword">proc</span> <a href="#isSpace%2CopenArray%5Bchar%5D"><span class="Identifier">isSpace</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span>
<span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1Str&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Returns true if <tt class="docutils literal"><span class="pre">s</span></tt> contains all whitespace runes.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;</span><span class="EscapeSequence">\t</span><span class="EscapeSequence">\l</span><span class="StringLit"> </span><span class="EscapeSequence">\v</span><span class="EscapeSequence">\r</span><span class="EscapeSequence">\f</span><span class="StringLit">&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">isSpace</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L655" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L655" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="isSpace,string">
<dt><pre><span class="Keyword">proc</span> <a href="#isSpace%2Cstring"><span class="Identifier">isSpace</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Returns true if <tt class="docutils literal"><span class="pre">s</span></tt> contains all whitespace runes.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;</span><span class="EscapeSequence">\t</span><span class="EscapeSequence">\l</span><span class="StringLit"> </span><span class="EscapeSequence">\v</span><span class="EscapeSequence">\r</span><span class="EscapeSequence">\f</span><span class="StringLit">&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">isSpace</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1299" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1299" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isTitle-procs-all">
<div id="isTitle,Rune">
<dt><pre><span class="Keyword">proc</span> <a href="#isTitle%2CRune"><span class="Identifier">isTitle</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns true if <tt class="docutils literal"><span class="pre">c</span></tt> is a Unicode titlecase code point.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#toTitle,Rune">toTitle proc</a></li>
<li><a class="reference external" href="#isLower,Rune">isLower proc</a></li>
<li><a class="reference external" href="#isUpper,Rune">isUpper proc</a></li>
<li><a class="reference external" href="#isAlpha,Rune">isAlpha proc</a></li>
<li><a class="reference external" href="#isWhiteSpace,Rune">isWhiteSpace proc</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L594" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L594" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isUpper-procs-all">
<div id="isUpper,Rune">
<dt><pre><span class="Keyword">proc</span> <a href="#isUpper%2CRune"><span class="Identifier">isUpper</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns true if <tt class="docutils literal"><span class="pre">c</span></tt> is a upper case rune.</p>
<p>If possible, prefer <tt class="docutils literal"><span class="pre">isLower</span></tt> over <tt class="docutils literal"><span class="pre">isUpper</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#toUpper,Rune">toUpper proc</a></li>
<li><a class="reference external" href="#isLower,Rune">isLower proc</a></li>
<li><a class="reference external" href="#isTitle,Rune">isTitle proc</a></li>
<li><a class="reference external" href="#isAlpha,Rune">isAlpha proc</a></li>
<li><a class="reference external" href="#isWhiteSpace,Rune">isWhiteSpace proc</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L551" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L551" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="isWhiteSpace-procs-all">
<div id="isWhiteSpace,Rune">
<dt><pre><span class="Keyword">proc</span> <a href="#isWhiteSpace%2CRune"><span class="Identifier">isWhiteSpace</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns true if <tt class="docutils literal"><span class="pre">c</span></tt> is a Unicode whitespace code point.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#isLower,Rune">isLower proc</a></li>
<li><a class="reference external" href="#isUpper,Rune">isUpper proc</a></li>
<li><a class="reference external" href="#isTitle,Rune">isTitle proc</a></li>
<li><a class="reference external" href="#isAlpha,Rune">isAlpha proc</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L605" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L605" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="lastRune-procs-all">
<div id="lastRune,openArray[char],int">
<dt><pre><span class="Keyword">proc</span> <a href="#lastRune%2CopenArray%5Bchar%5D%2Cint"><span class="Identifier">lastRune</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">last</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Other">(</span><a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">,</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Length of the last rune in <tt class="docutils literal"><span class="pre">s[0..last]</span></tt>. Returns the rune and its length in bytes.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L920" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L920" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="lastRune,string,int">
<dt><pre><span class="Keyword">proc</span> <a href="#lastRune%2Cstring%2Cint"><span class="Identifier">lastRune</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">last</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Other">(</span><a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">,</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Length of the last rune in <tt class="docutils literal"><span class="pre">s[0..last]</span></tt>. Returns the rune and its length in bytes.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1416" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1416" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="repeat-procs-all">
<div id="repeat,Rune,Natural">
<dt><pre><span class="Keyword">proc</span> <a href="#repeat%2CRune%2CNatural"><span class="Identifier">repeat</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">;</span> <span class="Identifier">count</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span>
<span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nucRepeatRune&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns a string of <tt class="docutils literal"><span class="pre">count</span></tt> Runes <tt class="docutils literal"><span class="pre">c</span></tt>.</p>
<p>The returned string will have a rune-length of <tt class="docutils literal"><span class="pre">count</span></tt>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;ñ&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">repeat</span><span class="Punctuation">(</span><span class="DecNumber">5</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;ñññññ&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1101" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1101" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="reversed-procs-all">
<div id="reversed,openArray[char]">
<dt><pre><span class="Keyword">proc</span> <a href="#reversed%2CopenArray%5Bchar%5D"><span class="Identifier">reversed</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns the reverse of <tt class="docutils literal"><span class="pre">s</span></tt>, interpreting it as runes.</p>
<p>Unicode combining characters are correctly interpreted as well.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span> <span class="Identifier">reversed</span><span class="Punctuation">(</span><span class="StringLit">&quot;Reverse this!&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;!siht esreveR&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">reversed</span><span class="Punctuation">(</span><span class="StringLit">&quot;先秦兩漢&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;漢兩秦先&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">reversed</span><span class="Punctuation">(</span><span class="StringLit">&quot;as⃝df̅&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;f̅ds⃝a&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">reversed</span><span class="Punctuation">(</span><span class="StringLit">&quot;a⃞b⃞c⃞&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;c⃞b⃞a⃞&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L866" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L866" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="reversed,string">
<dt><pre><span class="Keyword">proc</span> <a href="#reversed%2Cstring"><span class="Identifier">reversed</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns the reverse of <tt class="docutils literal"><span class="pre">s</span></tt>, interpreting it as runes.</p>
<p>Unicode combining characters are correctly interpreted as well.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span> <span class="Identifier">reversed</span><span class="Punctuation">(</span><span class="StringLit">&quot;Reverse this!&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;!siht esreveR&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">reversed</span><span class="Punctuation">(</span><span class="StringLit">&quot;先秦兩漢&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;漢兩秦先&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">reversed</span><span class="Punctuation">(</span><span class="StringLit">&quot;as⃝df̅&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;f̅ds⃝a&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">reversed</span><span class="Punctuation">(</span><span class="StringLit">&quot;a⃞b⃞c⃞&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;c⃞b⃞a⃞&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1395" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1395" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="runeAt-procs-all">
<div id="runeAt,openArray[char],Natural">
<dt><pre><span class="Keyword">proc</span> <a href="#runeAt%2CopenArray%5Bchar%5D%2CNatural"><span class="Identifier">runeAt</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns the rune in <tt class="docutils literal"><span class="pre">s</span></tt> at <strong>byte index</strong> <tt class="docutils literal"><span class="pre">i</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#runeAtPos,string,int">runeAtPos proc</a></li>
<li><a class="reference external" href="#runeStrAtPos,string,Natural">runeStrAtPos proc</a></li>
<li><a class="reference external" href="#fastRuneAt.t,string,int,untyped">fastRuneAt template</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;añyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;ñ&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;ñ&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;y&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L162" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L162" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="runeAt,string,Natural">
<dt><pre><span class="Keyword">proc</span> <a href="#runeAt%2Cstring%2CNatural"><span class="Identifier">runeAt</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns the rune in <tt class="docutils literal"><span class="pre">s</span></tt> at <strong>byte index</strong> <tt class="docutils literal"><span class="pre">i</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#runeAtPos,string,int">runeAtPos proc</a></li>
<li><a class="reference external" href="#runeStrAtPos,string,Natural">runeStrAtPos proc</a></li>
<li><a class="reference external" href="#fastRuneAt.t,string,int,untyped">fastRuneAt template</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;añyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;ñ&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;ñ&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;y&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1188" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1188" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="runeAtPos-procs-all">
<div id="runeAtPos,openArray[char],int">
<dt><pre><span class="Keyword">proc</span> <a href="#runeAtPos%2CopenArray%5Bchar%5D%2Cint"><span class="Identifier">runeAtPos</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">pos</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns the rune at position <tt class="docutils literal"><span class="pre">pos</span></tt>.</p>
<p><strong>Beware:</strong> This can lead to unoptimized code and slow execution! Most problems can be solved more efficiently by using an iterator or conversion to a seq of Rune.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#runeAt,string,Natural">runeAt proc</a></li>
<li><a class="reference external" href="#runeStrAtPos,string,Natural">runeStrAtPos proc</a></li>
<li><a class="reference external" href="#fastRuneAt.t,string,int,untyped">fastRuneAt template</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L368" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L368" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="runeAtPos,string,int">
<dt><pre><span class="Keyword">proc</span> <a href="#runeAtPos%2Cstring%2Cint"><span class="Identifier">runeAtPos</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">pos</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns the rune at position <tt class="docutils literal"><span class="pre">pos</span></tt>.</p>
<p><strong>Beware:</strong> This can lead to unoptimized code and slow execution! Most problems can be solved more efficiently by using an iterator or conversion to a seq of Rune.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#runeAt,string,Natural">runeAt proc</a></li>
<li><a class="reference external" href="#runeStrAtPos,string,Natural">runeStrAtPos proc</a></li>
<li><a class="reference external" href="#fastRuneAt.t,string,int,untyped">fastRuneAt template</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1247" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1247" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="runeLen-procs-all">
<div id="runeLen,openArray[char]">
<dt><pre><span class="Keyword">proc</span> <a href="#runeLen%2CopenArray%5Bchar%5D"><span class="Identifier">runeLen</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Returns the number of runes of the string <tt class="docutils literal"><span class="pre">s</span></tt>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;añyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeLen</span> <span class="Operator">==</span> <span class="DecNumber">6</span>
<span class="Comment">## note: a.len == 8</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L45" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L45" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="runeLen,string">
<dt><pre><span class="Keyword">proc</span> <a href="#runeLen%2Cstring"><span class="Identifier">runeLen</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Returns the number of runes of the string <tt class="docutils literal"><span class="pre">s</span></tt>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;añyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeLen</span> <span class="Operator">==</span> <span class="DecNumber">6</span>
<span class="Comment">## note: a.len == 8</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1169" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1169" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="runeLenAt-procs-all">
<div id="runeLenAt,openArray[char],Natural">
<dt><pre><span class="Keyword">proc</span> <a href="#runeLenAt%2CopenArray%5Bchar%5D%2CNatural"><span class="Identifier">runeLenAt</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns the number of bytes the rune starting at <tt class="docutils literal"><span class="pre">s[i]</span></tt> takes.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#fastRuneAt.t,string,int,untyped">fastRuneAt template</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;añyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeLenAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeLenAt</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">2</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L64" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L64" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="runeLenAt,string,Natural">
<dt><pre><span class="Keyword">proc</span> <a href="#runeLenAt%2Cstring%2CNatural"><span class="Identifier">runeLenAt</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns the number of bytes the rune starting at <tt class="docutils literal"><span class="pre">s[i]</span></tt> takes.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#fastRuneAt.t,string,int,untyped">fastRuneAt template</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;añyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeLenAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeLenAt</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">2</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1177" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1177" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="runeOffset-procs-all">
<div id="runeOffset,openArray[char],Natural,Natural">
<dt><pre><span class="Keyword">proc</span> <a href="#runeOffset%2CopenArray%5Bchar%5D%2CNatural%2CNatural"><span class="Identifier">runeOffset</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">pos</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">;</span> <span class="Identifier">start</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns the byte position of rune at position <tt class="docutils literal"><span class="pre">pos</span></tt> in <tt class="docutils literal"><span class="pre">s</span></tt> with an optional start byte position. Returns the special value -1 if it runs out of the string.</p>
<p><strong>Beware:</strong> This can lead to unoptimized code and slow execution! Most problems can be solved more efficiently by using an iterator or conversion to a seq of Rune.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#runeReverseOffset,string,Positive">runeReverseOffset proc</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;añyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeOffset</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeOffset</span><span class="Punctuation">(</span><span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">4</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeOffset</span><span class="Punctuation">(</span><span class="DecNumber">4</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">6</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L313" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L313" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="runeOffset,string,Natural,Natural">
<dt><pre><span class="Keyword">proc</span> <a href="#runeOffset%2Cstring%2CNatural%2CNatural"><span class="Identifier">runeOffset</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">pos</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">;</span> <span class="Identifier">start</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns the byte position of rune at position <tt class="docutils literal"><span class="pre">pos</span></tt> in <tt class="docutils literal"><span class="pre">s</span></tt> with an optional start byte position. Returns the special value -1 if it runs out of the string.</p>
<p><strong>Beware:</strong> This can lead to unoptimized code and slow execution! Most problems can be solved more efficiently by using an iterator or conversion to a seq of Rune.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#runeReverseOffset,string,Positive">runeReverseOffset proc</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;añyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeOffset</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeOffset</span><span class="Punctuation">(</span><span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">4</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeOffset</span><span class="Punctuation">(</span><span class="DecNumber">4</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">6</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1212" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1212" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="runeReverseOffset-procs-all">
<div id="runeReverseOffset,openArray[char],Positive">
<dt><pre><span class="Keyword">proc</span> <a href="#runeReverseOffset%2CopenArray%5Bchar%5D%2CPositive"><span class="Identifier">runeReverseOffset</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">rev</span><span class="Other">:</span> <a href="system.html#Positive"><span class="Identifier">Positive</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Other">(</span><a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">,</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns a tuple with the byte offset of the rune at position <tt class="docutils literal"><span class="pre">rev</span></tt> in <tt class="docutils literal"><span class="pre">s</span></tt>, counting from the end (starting with 1) and the total number of runes in the string.</p>
<p>Returns a negative value for offset if there are too few runes in the string to satisfy the request.</p>
<p><strong>Beware:</strong> This can lead to unoptimized code and slow execution! Most problems can be solved more efficiently by using an iterator or conversion to a seq of Rune.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#runeOffset,string,Natural,Natural">runeOffset proc</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L340" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L340" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="runeReverseOffset,string,Positive">
<dt><pre><span class="Keyword">proc</span> <a href="#runeReverseOffset%2Cstring%2CPositive"><span class="Identifier">runeReverseOffset</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">rev</span><span class="Other">:</span> <a href="system.html#Positive"><span class="Identifier">Positive</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Other">(</span><a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">,</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns a tuple with the byte offset of the rune at position <tt class="docutils literal"><span class="pre">rev</span></tt> in <tt class="docutils literal"><span class="pre">s</span></tt>, counting from the end (starting with 1) and the total number of runes in the string.</p>
<p>Returns a negative value for offset if there are too few runes in the string to satisfy the request.</p>
<p><strong>Beware:</strong> This can lead to unoptimized code and slow execution! Most problems can be solved more efficiently by using an iterator or conversion to a seq of Rune.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#runeOffset,string,Natural,Natural">runeOffset proc</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1230" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1230" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="runeStrAtPos-procs-all">
<div id="runeStrAtPos,openArray[char],Natural">
<dt><pre><span class="Keyword">proc</span> <a href="#runeStrAtPos%2CopenArray%5Bchar%5D%2CNatural"><span class="Identifier">runeStrAtPos</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">pos</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns the rune at position <tt class="docutils literal"><span class="pre">pos</span></tt> as UTF8 String.</p>
<p><strong>Beware:</strong> This can lead to unoptimized code and slow execution! Most problems can be solved more efficiently by using an iterator or conversion to a seq of Rune.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#runeAt,string,Natural">runeAt proc</a></li>
<li><a class="reference external" href="#runeAtPos,string,int">runeAtPos proc</a></li>
<li><a class="reference external" href="#fastRuneAt.t,string,int,untyped">fastRuneAt template</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L381" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L381" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="runeStrAtPos,string,Natural">
<dt><pre><span class="Keyword">proc</span> <a href="#runeStrAtPos%2Cstring%2CNatural"><span class="Identifier">runeStrAtPos</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">pos</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns the rune at position <tt class="docutils literal"><span class="pre">pos</span></tt> as UTF8 String.</p>
<p><strong>Beware:</strong> This can lead to unoptimized code and slow execution! Most problems can be solved more efficiently by using an iterator or conversion to a seq of Rune.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#runeAt,string,Natural">runeAt proc</a></li>
<li><a class="reference external" href="#runeAtPos,string,int">runeAtPos proc</a></li>
<li><a class="reference external" href="#fastRuneAt.t,string,int,untyped">fastRuneAt template</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1260" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1260" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="runeSubStr-procs-all">
<div id="runeSubStr,openArray[char],int,int">
<dt><pre><span class="Keyword">proc</span> <a href="#runeSubStr%2CopenArray%5Bchar%5D%2Cint%2Cint"><span class="Identifier">runeSubStr</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">pos</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">;</span> <span class="Identifier">len</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">.</span><span class="Identifier">high</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns the UTF-8 substring starting at code point <tt class="docutils literal"><span class="pre">pos</span></tt> with <tt class="docutils literal"><span class="pre">len</span></tt> code points.</p>
<p>If <tt class="docutils literal"><span class="pre">pos</span></tt> or <tt class="docutils literal"><span class="pre">len</span></tt> is negative they count from the end of the string. If <tt class="docutils literal"><span class="pre">len</span></tt> is not given it means the longest possible string.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">s</span> <span class="Operator">=</span> <span class="StringLit">&quot;Hänsel ««: 10,00€&quot;</span>
<span class="Identifier">doAssert</span><span class="Punctuation">(</span><span class="Identifier">runeSubStr</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">,</span> <span class="DecNumber">0</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span><span class="Punctuation">(</span><span class="Identifier">runeSubStr</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">,</span> <span class="DecNumber">10</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;:&quot;</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span><span class="Punctuation">(</span><span class="Identifier">runeSubStr</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="DecNumber">6</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;10,00€&quot;</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span><span class="Punctuation">(</span><span class="Identifier">runeSubStr</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">,</span> <span class="DecNumber">10</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;: 10,00€&quot;</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span><span class="Punctuation">(</span><span class="Identifier">runeSubStr</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">,</span> <span class="DecNumber">12</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;10,00&quot;</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span><span class="Punctuation">(</span><span class="Identifier">runeSubStr</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;10,&quot;</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L395" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L395" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="runeSubStr,string,int,int">
<dt><pre><span class="Keyword">proc</span> <a href="#runeSubStr%2Cstring%2Cint%2Cint"><span class="Identifier">runeSubStr</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">pos</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">;</span> <span class="Identifier">len</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">.</span><span class="Identifier">high</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns the UTF-8 substring starting at code point <tt class="docutils literal"><span class="pre">pos</span></tt> with <tt class="docutils literal"><span class="pre">len</span></tt> code points.</p>
<p>If <tt class="docutils literal"><span class="pre">pos</span></tt> or <tt class="docutils literal"><span class="pre">len</span></tt> is negative they count from the end of the string. If <tt class="docutils literal"><span class="pre">len</span></tt> is not given it means the longest possible string.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">s</span> <span class="Operator">=</span> <span class="StringLit">&quot;Hänsel ««: 10,00€&quot;</span>
<span class="Identifier">doAssert</span><span class="Punctuation">(</span><span class="Identifier">runeSubStr</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">,</span> <span class="DecNumber">0</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span><span class="Punctuation">(</span><span class="Identifier">runeSubStr</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">,</span> <span class="DecNumber">10</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;:&quot;</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span><span class="Punctuation">(</span><span class="Identifier">runeSubStr</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="DecNumber">6</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;10,00€&quot;</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span><span class="Punctuation">(</span><span class="Identifier">runeSubStr</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">,</span> <span class="DecNumber">10</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;: 10,00€&quot;</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span><span class="Punctuation">(</span><span class="Identifier">runeSubStr</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">,</span> <span class="DecNumber">12</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;10,00&quot;</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span><span class="Punctuation">(</span><span class="Identifier">runeSubStr</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">,</span> <span class="Operator">-</span><span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;10,&quot;</span><span class="Punctuation">)</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1274" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1274" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="size-procs-all">
<div id="size,Rune">
<dt><pre><span class="Keyword">proc</span> <a href="#size%2CRune"><span class="Identifier">size</span></a><span class="Other">(</span><span class="Identifier">r</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Returns the number of bytes the rune <tt class="docutils literal"><span class="pre">r</span></tt> takes.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="Identifier">toRunes</span> <span class="StringLit">&quot;&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">size</span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Punctuation">]</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Identifier">doAssert</span> <span class="Identifier">size</span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">]</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">2</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L932" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L932" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="split-procs-all">
<div id="split,openArray[char],Rune,int">
<dt><pre><span class="Keyword">proc</span> <a href="#split%2CopenArray%5Bchar%5D%2CRune%2Cint"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">;</span> <span class="Identifier">maxsplit</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <span class="DecNumber">-1</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">]</span> {.
<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nucSplitRune&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
The same as the <a class="reference external" href="#split.i,string,Rune,int">split iterator</a>, but is a proc that returns a sequence of substrings.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1034" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1034" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="split,openArray[char],openArray[Rune],int">
<dt><pre><span class="Keyword">proc</span> <a href="#split%2CopenArray%5Bchar%5D%2CopenArray%5BRune%5D%2Cint"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">seps</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">]</span> <span class="Other">=</span> <span class="Identifier">unicodeSpaces</span><span class="Other">;</span>
<span class="Identifier">maxsplit</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <span class="DecNumber">-1</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">]</span> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span>
<span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nucSplitRunes&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
The same as the <a class="reference external" href="#split.i,string,openArray[Rune],int">split iterator</a>, but is a proc that returns a sequence of substrings.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1028" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1028" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="split,string,Rune,int">
<dt><pre><span class="Keyword">proc</span> <a href="#split%2Cstring%2CRune%2Cint"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">;</span> <span class="Identifier">maxsplit</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <span class="DecNumber">-1</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">]</span> {.
<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
The same as the <a class="reference external" href="#split.i,string,Rune,int">split iterator</a>, but is a proc that returns a sequence of substrings.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1474" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1474" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="split,string,openArray[Rune],int">
<dt><pre><span class="Keyword">proc</span> <a href="#split%2Cstring%2CopenArray%5BRune%5D%2Cint"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">seps</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">]</span> <span class="Other">=</span> <span class="Identifier">unicodeSpaces</span><span class="Other">;</span> <span class="Identifier">maxsplit</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <span class="DecNumber">-1</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span>
<a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">]</span> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
The same as the <a class="reference external" href="#split.i,string,openArray[Rune],int">split iterator</a>, but is a proc that returns a sequence of substrings.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1468" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1468" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="splitWhitespace-procs-all">
<div id="splitWhitespace,openArray[char]">
<dt><pre><span class="Keyword">proc</span> <a href="#splitWhitespace%2CopenArray%5Bchar%5D"><span class="Identifier">splitWhitespace</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">]</span> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span>
<span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;ncuSplitWhitespace&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
The same as the <a class="reference external" href="#splitWhitespace.i,string">splitWhitespace</a> iterator, but is a proc that returns a sequence of substrings.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1011" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1011" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="splitWhitespace,string">
<dt><pre><span class="Keyword">proc</span> <a href="#splitWhitespace%2Cstring"><span class="Identifier">splitWhitespace</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">]</span> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
The same as the <a class="reference external" href="#splitWhitespace.i,string">splitWhitespace</a> iterator, but is a proc that returns a sequence of substrings.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1452" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1452" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="strip-procs-all">
<div id="strip,openArray[char],openArray[Rune]">
<dt><pre><span class="Keyword">proc</span> <a href="#strip%2CopenArray%5Bchar%5D%2CopenArray%5BRune%5D"><span class="Identifier">strip</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">leading</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">;</span> <span class="Identifier">trailing</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">;</span>
<span class="Identifier">runes</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">]</span> <span class="Other">=</span> <span class="Identifier">unicodeSpaces</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span>
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nucStrip&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Strips leading or trailing <tt class="docutils literal"><span class="pre">runes</span></tt> from <tt class="docutils literal"><span class="pre">s</span></tt> and returns the resulting string.</p>
<p>If <tt class="docutils literal"><span class="pre">leading</span></tt> is true (default), leading <tt class="docutils literal"><span class="pre">runes</span></tt> are stripped. If <tt class="docutils literal"><span class="pre">trailing</span></tt> is true (default), trailing <tt class="docutils literal"><span class="pre">runes</span></tt> are stripped. If both are false, the string is returned unchanged.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;</span><span class="EscapeSequence">\t</span><span class="StringLit">áñyóng &quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">strip</span> <span class="Operator">==</span> <span class="StringLit">&quot;áñyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">strip</span><span class="Punctuation">(</span><span class="Identifier">leading</span> <span class="Operator">=</span> <span class="Identifier">false</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;</span><span class="EscapeSequence">\t</span><span class="StringLit">áñyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">strip</span><span class="Punctuation">(</span><span class="Identifier">trailing</span> <span class="Operator">=</span> <span class="Identifier">false</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;áñyóng &quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1053" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1053" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="strip,string,openArray[Rune]">
<dt><pre><span class="Keyword">proc</span> <a href="#strip%2Cstring%2CopenArray%5BRune%5D"><span class="Identifier">strip</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">leading</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">;</span> <span class="Identifier">trailing</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">;</span>
<span class="Identifier">runes</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">]</span> <span class="Other">=</span> <span class="Identifier">unicodeSpaces</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span>
<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Strips leading or trailing <tt class="docutils literal"><span class="pre">runes</span></tt> from <tt class="docutils literal"><span class="pre">s</span></tt> and returns the resulting string.</p>
<p>If <tt class="docutils literal"><span class="pre">leading</span></tt> is true (default), leading <tt class="docutils literal"><span class="pre">runes</span></tt> are stripped. If <tt class="docutils literal"><span class="pre">trailing</span></tt> is true (default), trailing <tt class="docutils literal"><span class="pre">runes</span></tt> are stripped. If both are false, the string is returned unchanged.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;</span><span class="EscapeSequence">\t</span><span class="StringLit">áñyóng &quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">strip</span> <span class="Operator">==</span> <span class="StringLit">&quot;áñyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">strip</span><span class="Punctuation">(</span><span class="Identifier">leading</span> <span class="Operator">=</span> <span class="Identifier">false</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;</span><span class="EscapeSequence">\t</span><span class="StringLit">áñyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">strip</span><span class="Punctuation">(</span><span class="Identifier">trailing</span> <span class="Operator">=</span> <span class="Identifier">false</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;áñyóng &quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1479" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1479" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="swapCase-procs-all">
<div id="swapCase,openArray[char]">
<dt><pre><span class="Keyword">proc</span> <a href="#swapCase%2CopenArray%5Bchar%5D"><span class="Identifier">swapCase</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span>
<span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Swaps the case of runes in <tt class="docutils literal"><span class="pre">s</span></tt>.</p>
<p>Returns a new string such that the cases of all runes are swapped if possible.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">swapCase</span><span class="Punctuation">(</span><span class="StringLit">&quot;Αlpha Βeta Γamma&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;αLPHA βETA γAMMA&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L690" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L690" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="swapCase,string">
<dt><pre><span class="Keyword">proc</span> <a href="#swapCase%2Cstring"><span class="Identifier">swapCase</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Swaps the case of runes in <tt class="docutils literal"><span class="pre">s</span></tt>.</p>
<p>Returns a new string such that the cases of all runes are swapped if possible.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">swapCase</span><span class="Punctuation">(</span><span class="StringLit">&quot;Αlpha Βeta Γamma&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;αLPHA βETA γAMMA&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1319" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1319" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="title-procs-all">
<div id="title,openArray[char]">
<dt><pre><span class="Keyword">proc</span> <a href="#title%2CopenArray%5Bchar%5D"><span class="Identifier">title</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1&quot;</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Converts <tt class="docutils literal"><span class="pre">s</span></tt> to a unicode title.</p>
<p>Returns a new string such that the first character in each word inside <tt class="docutils literal"><span class="pre">s</span></tt> is capitalized.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">title</span><span class="Punctuation">(</span><span class="StringLit">&quot;αlpha βeta γamma&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;Αlpha Βeta Γamma&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L782" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L782" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="title,string">
<dt><pre><span class="Keyword">proc</span> <a href="#title%2Cstring"><span class="Identifier">title</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Converts <tt class="docutils literal"><span class="pre">s</span></tt> to a unicode title.</p>
<p>Returns a new string such that the first character in each word inside <tt class="docutils literal"><span class="pre">s</span></tt> is capitalized.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">title</span><span class="Punctuation">(</span><span class="StringLit">&quot;αlpha βeta γamma&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;Αlpha Βeta Γamma&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1351" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1351" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="toLower-procs-all">
<div id="toLower,Rune">
<dt><pre><span class="Keyword">proc</span> <a href="#toLower%2CRune"><span class="Identifier">toLower</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">)</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Converts <tt class="docutils literal"><span class="pre">c</span></tt> into lower case. This works for any rune.</p>
<p>If possible, prefer <tt class="docutils literal"><span class="pre">toLower</span></tt> over <tt class="docutils literal"><span class="pre">toUpper</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#toUpper,Rune">toUpper proc</a></li>
<li><a class="reference external" href="#toTitle,Rune">toTitle proc</a></li>
<li><a class="reference external" href="#isLower,Rune">isLower proc</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L482" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L482" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="toLower,openArray[char]">
<dt><pre><span class="Keyword">proc</span> <a href="#toLower%2CopenArray%5Bchar%5D"><span class="Identifier">toLower</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span>
<span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1Str&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Converts <tt class="docutils literal"><span class="pre">s</span></tt> into lower-case runes.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">toLower</span><span class="Punctuation">(</span><span class="StringLit">&quot;ABΓ&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;abγ&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L683" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L683" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="toLower,string">
<dt><pre><span class="Keyword">proc</span> <a href="#toLower%2Cstring"><span class="Identifier">toLower</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Converts <tt class="docutils literal"><span class="pre">s</span></tt> into lower-case runes.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">toLower</span><span class="Punctuation">(</span><span class="StringLit">&quot;ABΓ&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;abγ&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1313" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1313" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="toRunes-procs-all">
<div id="toRunes,openArray[char]">
<dt><pre><span class="Keyword">proc</span> <a href="#toRunes%2CopenArray%5Bchar%5D"><span class="Identifier">toRunes</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Obtains a sequence containing the Runes in <tt class="docutils literal"><span class="pre">s</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#$,Rune">$ proc</a> for a reverse operation</li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="Identifier">toRunes</span><span class="Punctuation">(</span><span class="StringLit">&quot;aáä&quot;</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">&quot;a&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="StringLit">&quot;á&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="StringLit">&quot;ä&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">]</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L831" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L831" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="toRunes,string">
<dt><pre><span class="Keyword">proc</span> <a href="#toRunes%2Cstring"><span class="Identifier">toRunes</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">]</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Obtains a sequence containing the Runes in <tt class="docutils literal"><span class="pre">s</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#$,Rune">$ proc</a> for a reverse operation</li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="Identifier">toRunes</span><span class="Punctuation">(</span><span class="StringLit">&quot;aáä&quot;</span><span class="Punctuation">)</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">&quot;a&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="StringLit">&quot;á&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">,</span> <span class="StringLit">&quot;ä&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">]</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1377" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1377" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="toTitle-procs-all">
<div id="toTitle,Rune">
<dt><pre><span class="Keyword">proc</span> <a href="#toTitle%2CRune"><span class="Identifier">toTitle</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">)</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Converts <tt class="docutils literal"><span class="pre">c</span></tt> to title case.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#toLower,Rune">toLower proc</a></li>
<li><a class="reference external" href="#toUpper,Rune">toUpper proc</a></li>
<li><a class="reference external" href="#isTitle,Rune">isTitle proc</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L518" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L518" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="toUpper-procs-all">
<div id="toUpper,Rune">
<dt><pre><span class="Keyword">proc</span> <a href="#toUpper%2CRune"><span class="Identifier">toUpper</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">)</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Converts <tt class="docutils literal"><span class="pre">c</span></tt> into upper case. This works for any rune.</p>
<p>If possible, prefer <tt class="docutils literal"><span class="pre">toLower</span></tt> over <tt class="docutils literal"><span class="pre">toUpper</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#toLower,Rune">toLower proc</a></li>
<li><a class="reference external" href="#toTitle,Rune">toTitle proc</a></li>
<li><a class="reference external" href="#isUpper,Rune">isUpper proc</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L500" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L500" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="toUpper,openArray[char]">
<dt><pre><span class="Keyword">proc</span> <a href="#toUpper%2CopenArray%5Bchar%5D"><span class="Identifier">toUpper</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span>
<span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1Str&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Converts <tt class="docutils literal"><span class="pre">s</span></tt> into upper-case runes.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">toUpper</span><span class="Punctuation">(</span><span class="StringLit">&quot;abγ&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;ABΓ&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L676" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L676" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="toUpper,string">
<dt><pre><span class="Keyword">proc</span> <a href="#toUpper%2Cstring"><span class="Identifier">toUpper</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Converts <tt class="docutils literal"><span class="pre">s</span></tt> into upper-case runes.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">toUpper</span><span class="Punctuation">(</span><span class="StringLit">&quot;abγ&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;ABΓ&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1307" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1307" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="toUTF8-procs-all">
<div id="toUTF8,Rune">
<dt><pre><span class="Keyword">proc</span> <a href="#toUTF8%2CRune"><span class="Identifier">toUTF8</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1&quot;</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Converts a rune into its UTF-8 representation.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#validateUtf8,string">validateUtf8 proc</a></li>
<li><a class="reference external" href="#$,Rune">$ proc</a> alias for <tt class="docutils literal"><span class="pre"><span class="Identifier">toUTF8</span></span></tt></li>
<li><a class="reference external" href="#utf8.i,string">utf8 iterator</a></li>
<li><a class="reference external" href="#fastToUTF8Copy.t,Rune,string,int">fastToUTF8Copy template</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;añyóng&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">toUTF8</span> <span class="Operator">==</span> <span class="StringLit">&quot;ñ&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L264" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L264" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="translate-procs-all">
<div id="translate,openArray[char],proc(string)">
<dt><pre><span class="Keyword">proc</span> <a href="#translate%2CopenArray%5Bchar%5D%2Cproc%28string%29"><span class="Identifier">translate</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">replacements</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">key</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">extern</span><span class="Other">:</span> <span class="StringLit">&quot;nuc$1&quot;</span><span class="Other">,</span> </span><span class="Identifier">effectsOf</span><span class="Other">:</span> <span class="Identifier">replacements</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Translates words in a string using the <tt class="docutils literal"><span class="pre">replacements</span></tt> proc to substitute words inside <tt class="docutils literal"><span class="pre">s</span></tt> with their replacements.</p>
<p><tt class="docutils literal"><span class="pre">replacements</span></tt> is any proc that takes a word and returns a new word to fill it's place.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">proc</span> <span class="Identifier">wordToNumber</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">:</span> <span class="Identifier">string</span><span class="Punctuation">)</span><span class="Punctuation">:</span> <span class="Identifier">string</span> <span class="Operator">=</span>
<span class="Keyword">case</span> <span class="Identifier">s</span>
<span class="Keyword">of</span> <span class="StringLit">&quot;one&quot;</span><span class="Punctuation">:</span> <span class="StringLit">&quot;1&quot;</span>
<span class="Keyword">of</span> <span class="StringLit">&quot;two&quot;</span><span class="Punctuation">:</span> <span class="StringLit">&quot;2&quot;</span>
<span class="Keyword">else</span><span class="Punctuation">:</span> <span class="Identifier">s</span>
<span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;one two three four&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">translate</span><span class="Punctuation">(</span><span class="Identifier">wordToNumber</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;1 2 three four&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L729" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L729" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="translate,string,proc(string)">
<dt><pre><span class="Keyword">proc</span> <a href="#translate%2Cstring%2Cproc%28string%29"><span class="Identifier">translate</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">replacements</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">key</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.
<span class="Identifier">effectsOf</span><span class="Other">:</span> <span class="Identifier">replacements</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Translates words in a string using the <tt class="docutils literal"><span class="pre">replacements</span></tt> proc to substitute words inside <tt class="docutils literal"><span class="pre">s</span></tt> with their replacements.</p>
<p><tt class="docutils literal"><span class="pre">replacements</span></tt> is any proc that takes a word and returns a new word to fill it's place.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">proc</span> <span class="Identifier">wordToNumber</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">:</span> <span class="Identifier">string</span><span class="Punctuation">)</span><span class="Punctuation">:</span> <span class="Identifier">string</span> <span class="Operator">=</span>
<span class="Keyword">case</span> <span class="Identifier">s</span>
<span class="Keyword">of</span> <span class="StringLit">&quot;one&quot;</span><span class="Punctuation">:</span> <span class="StringLit">&quot;1&quot;</span>
<span class="Keyword">of</span> <span class="StringLit">&quot;two&quot;</span><span class="Punctuation">:</span> <span class="StringLit">&quot;2&quot;</span>
<span class="Keyword">else</span><span class="Punctuation">:</span> <span class="Identifier">s</span>
<span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="StringLit">&quot;one two three four&quot;</span>
<span class="Identifier">doAssert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">translate</span><span class="Punctuation">(</span><span class="Identifier">wordToNumber</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;1 2 three four&quot;</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1335" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1335" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="validateUtf8-procs-all">
<div id="validateUtf8,openArray[char]">
<dt><pre><span class="Keyword">proc</span> <a href="#validateUtf8%2CopenArray%5Bchar%5D"><span class="Identifier">validateUtf8</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns the position of the invalid byte in <tt class="docutils literal"><span class="pre">s</span></tt> if the string <tt class="docutils literal"><span class="pre">s</span></tt> does not hold valid UTF-8 data. Otherwise <tt class="docutils literal"><span class="pre">-1</span></tt> is returned.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#toUTF8,Rune">toUTF8 proc</a></li>
<li><a class="reference external" href="#$,Rune">$ proc</a> alias for <tt class="docutils literal"><span class="pre"><span class="Identifier">toUTF8</span></span></tt></li>
<li><a class="reference external" href="#fastToUTF8Copy.t,Rune,string,int">fastToUTF8Copy template</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L176" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L176" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="validateUtf8,string">
<dt><pre><span class="Keyword">proc</span> <a href="#validateUtf8%2Cstring"><span class="Identifier">validateUtf8</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Returns the position of the invalid byte in <tt class="docutils literal"><span class="pre">s</span></tt> if the string <tt class="docutils literal"><span class="pre">s</span></tt> does not hold valid UTF-8 data. Otherwise <tt class="docutils literal"><span class="pre">-1</span></tt> is returned.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#toUTF8,Rune">toUTF8 proc</a></li>
<li><a class="reference external" href="#$,Rune">$ proc</a> alias for <tt class="docutils literal"><span class="pre"><span class="Identifier">toUTF8</span></span></tt></li>
<li><a class="reference external" href="#fastToUTF8Copy.t,Rune,string,int">fastToUTF8Copy template</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1202" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1202" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
</dl>
</div>
<div class="section" id="15">
<h1><a class="toc-backref" href="#15">Iterators</a></h1>
<dl class="item">
<div id="runes-iterators-all">
<div id="runes.i,openArray[char]">
<dt><pre><span class="Keyword">iterator</span> <a href="#runes.i%2CopenArray%5Bchar%5D"><span class="Identifier">runes</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Iterates over any rune of the string <tt class="docutils literal"><span class="pre">s</span></tt> returning runes.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L808" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L808" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="runes.i,string">
<dt><pre><span class="Keyword">iterator</span> <a href="#runes.i%2Cstring"><span class="Identifier">runes</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Iterates over any rune of the string <tt class="docutils literal"><span class="pre">s</span></tt> returning runes.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1361" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1361" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="split-iterators-all">
<div id="split.i,openArray[char],Rune,int">
<dt><pre><span class="Keyword">iterator</span> <a href="#split.i%2CopenArray%5Bchar%5D%2CRune%2Cint"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">;</span> <span class="Identifier">maxsplit</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <span class="DecNumber">-1</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Splits the unicode string <tt class="docutils literal"><span class="pre">s</span></tt> into substrings using a single separator. Substrings are separated by the rune <tt class="docutils literal"><span class="pre">sep</span></tt>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">sequtils</span>
<span class="Identifier">assert</span> <span class="Identifier">toSeq</span><span class="Punctuation">(</span><span class="Identifier">split</span><span class="Punctuation">(</span><span class="StringLit">&quot;;;hÃllo;this;is;an;;example;;;是&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;;&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">)</span><span class="Punctuation">)</span> <span class="Operator">==</span>
<span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">&quot;&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;hÃllo&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;this&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;is&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;an&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;example&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">]</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1017" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1017" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="split.i,openArray[char],openArray[Rune],int">
<dt><pre><span class="Keyword">iterator</span> <a href="#split.i%2CopenArray%5Bchar%5D%2CopenArray%5BRune%5D%2Cint"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">seps</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">]</span> <span class="Other">=</span> <span class="Identifier">unicodeSpaces</span><span class="Other">;</span>
<span class="Identifier">maxsplit</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <span class="DecNumber">-1</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Splits the unicode string <tt class="docutils literal"><span class="pre">s</span></tt> into substrings using a group of separators.</p>
<p>Substrings are separated by a substring containing only <tt class="docutils literal"><span class="pre">seps</span></tt>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">sequtils</span>
<span class="Identifier">assert</span> <span class="Identifier">toSeq</span><span class="Punctuation">(</span><span class="StringLit">&quot;hÃllo</span><span class="EscapeSequence">\l</span><span class="StringLit">this</span><span class="EscapeSequence">\l</span><span class="StringLit">is an</span><span class="EscapeSequence">\t</span><span class="StringLit">example</span><span class="EscapeSequence">\l</span><span class="StringLit">&quot;</span><span class="Operator">.</span><span class="Identifier">split</span><span class="Punctuation">)</span> <span class="Operator">==</span>
<span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">&quot;hÃllo&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;this&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;is&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;an&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;example&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">]</span>
<span class="Comment"># And the following code splits the same string using a sequence of Runes.</span>
<span class="Identifier">assert</span> <span class="Identifier">toSeq</span><span class="Punctuation">(</span><span class="Identifier">split</span><span class="Punctuation">(</span><span class="StringLit">&quot;añyóng:hÃllo;是$example&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;;:$&quot;</span><span class="Operator">.</span><span class="Identifier">toRunes</span><span class="Punctuation">)</span><span class="Punctuation">)</span> <span class="Operator">==</span>
<span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">&quot;añyóng&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;hÃllo&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;example&quot;</span><span class="Punctuation">]</span>
<span class="Comment"># example with a `Rune` separator and unused one `;`:</span>
<span class="Identifier">assert</span> <span class="Identifier">toSeq</span><span class="Punctuation">(</span><span class="Identifier">split</span><span class="Punctuation">(</span><span class="StringLit">&quot;ab是de:f:&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;;:是&quot;</span><span class="Operator">.</span><span class="Identifier">toRunes</span><span class="Punctuation">)</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">&quot;ab&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;de&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;f&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">]</span>
<span class="Comment"># Another example that splits a string containing a date.</span>
<span class="Keyword">let</span> <span class="Identifier">date</span> <span class="Operator">=</span> <span class="StringLit">&quot;2012-11-20T22:08:08.398990&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">toSeq</span><span class="Punctuation">(</span><span class="Identifier">split</span><span class="Punctuation">(</span><span class="Identifier">date</span><span class="Punctuation">,</span> <span class="StringLit">&quot; -:T&quot;</span><span class="Operator">.</span><span class="Identifier">toRunes</span><span class="Punctuation">)</span><span class="Punctuation">)</span> <span class="Operator">==</span>
<span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">&quot;2012&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;11&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;20&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;22&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;08&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;08.398990&quot;</span><span class="Punctuation">]</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L977" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L977" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="split.i,string,Rune,int">
<dt><pre><span class="Keyword">iterator</span> <a href="#split.i%2Cstring%2CRune%2Cint"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">sep</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">;</span> <span class="Identifier">maxsplit</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <span class="DecNumber">-1</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Splits the unicode string <tt class="docutils literal"><span class="pre">s</span></tt> into substrings using a single separator. Substrings are separated by the rune <tt class="docutils literal"><span class="pre">sep</span></tt>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">sequtils</span>
<span class="Identifier">assert</span> <span class="Identifier">toSeq</span><span class="Punctuation">(</span><span class="Identifier">split</span><span class="Punctuation">(</span><span class="StringLit">&quot;;;hÃllo;this;is;an;;example;;;是&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;;&quot;</span><span class="Operator">.</span><span class="Identifier">runeAt</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Punctuation">)</span><span class="Punctuation">)</span> <span class="Operator">==</span>
<span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">&quot;&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;hÃllo&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;this&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;is&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;an&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;example&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">]</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1457" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1457" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="split.i,string,openArray[Rune],int">
<dt><pre><span class="Keyword">iterator</span> <a href="#split.i%2Cstring%2CopenArray%5BRune%5D%2Cint"><span class="Identifier">split</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">seps</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">]</span> <span class="Other">=</span> <span class="Identifier">unicodeSpaces</span><span class="Other">;</span>
<span class="Identifier">maxsplit</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <span class="DecNumber">-1</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Splits the unicode string <tt class="docutils literal"><span class="pre">s</span></tt> into substrings using a group of separators.</p>
<p>Substrings are separated by a substring containing only <tt class="docutils literal"><span class="pre">seps</span></tt>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">sequtils</span>
<span class="Identifier">assert</span> <span class="Identifier">toSeq</span><span class="Punctuation">(</span><span class="StringLit">&quot;hÃllo</span><span class="EscapeSequence">\l</span><span class="StringLit">this</span><span class="EscapeSequence">\l</span><span class="StringLit">is an</span><span class="EscapeSequence">\t</span><span class="StringLit">example</span><span class="EscapeSequence">\l</span><span class="StringLit">&quot;</span><span class="Operator">.</span><span class="Identifier">split</span><span class="Punctuation">)</span> <span class="Operator">==</span>
<span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">&quot;hÃllo&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;this&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;is&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;an&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;example&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">]</span>
<span class="Comment"># And the following code splits the same string using a sequence of Runes.</span>
<span class="Identifier">assert</span> <span class="Identifier">toSeq</span><span class="Punctuation">(</span><span class="Identifier">split</span><span class="Punctuation">(</span><span class="StringLit">&quot;añyóng:hÃllo;是$example&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;;:$&quot;</span><span class="Operator">.</span><span class="Identifier">toRunes</span><span class="Punctuation">)</span><span class="Punctuation">)</span> <span class="Operator">==</span>
<span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">&quot;añyóng&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;hÃllo&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;example&quot;</span><span class="Punctuation">]</span>
<span class="Comment"># example with a `Rune` separator and unused one `;`:</span>
<span class="Identifier">assert</span> <span class="Identifier">toSeq</span><span class="Punctuation">(</span><span class="Identifier">split</span><span class="Punctuation">(</span><span class="StringLit">&quot;ab是de:f:&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;;:是&quot;</span><span class="Operator">.</span><span class="Identifier">toRunes</span><span class="Punctuation">)</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">&quot;ab&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;de&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;f&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;&quot;</span><span class="Punctuation">]</span>
<span class="Comment"># Another example that splits a string containing a date.</span>
<span class="Keyword">let</span> <span class="Identifier">date</span> <span class="Operator">=</span> <span class="StringLit">&quot;2012-11-20T22:08:08.398990&quot;</span>
<span class="Identifier">assert</span> <span class="Identifier">toSeq</span><span class="Punctuation">(</span><span class="Identifier">split</span><span class="Punctuation">(</span><span class="Identifier">date</span><span class="Punctuation">,</span> <span class="StringLit">&quot; -:T&quot;</span><span class="Operator">.</span><span class="Identifier">toRunes</span><span class="Punctuation">)</span><span class="Punctuation">)</span> <span class="Operator">==</span>
<span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">&quot;2012&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;11&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;20&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;22&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;08&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;08.398990&quot;</span><span class="Punctuation">]</span></pre>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1421" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1421" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="splitWhitespace-iterators-all">
<div id="splitWhitespace.i,openArray[char]">
<dt><pre><span class="Keyword">iterator</span> <a href="#splitWhitespace.i%2CopenArray%5Bchar%5D"><span class="Identifier">splitWhitespace</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Splits a unicode string at whitespace runes.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1003" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1003" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="splitWhitespace.i,string">
<dt><pre><span class="Keyword">iterator</span> <a href="#splitWhitespace.i%2Cstring"><span class="Identifier">splitWhitespace</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
Splits a unicode string at whitespace runes.
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1447" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1447" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="utf8-iterators-all">
<div id="utf8.i,openArray[char]">
<dt><pre><span class="Keyword">iterator</span> <a href="#utf8.i%2CopenArray%5Bchar%5D"><span class="Identifier">utf8</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Iterates over any rune of the string <tt class="docutils literal"><span class="pre">s</span></tt> returning utf8 values.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#validateUtf8,string">validateUtf8 proc</a></li>
<li><a class="reference external" href="#toUTF8,Rune">toUTF8 proc</a></li>
<li><a class="reference external" href="#$,Rune">$ proc</a> alias for <tt class="docutils literal"><span class="pre"><span class="Identifier">toUTF8</span></span></tt></li>
<li><a class="reference external" href="#fastToUTF8Copy.t,Rune,string,int">fastToUTF8Copy template</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L817" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L817" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
<div id="utf8.i,string">
<dt><pre><span class="Keyword">iterator</span> <a href="#utf8.i%2Cstring"><span class="Identifier">utf8</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
<dd>
<p>Iterates over any rune of the string <tt class="docutils literal"><span class="pre">s</span></tt> returning utf8 values.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#validateUtf8,string">validateUtf8 proc</a></li>
<li><a class="reference external" href="#toUTF8,Rune">toUTF8 proc</a></li>
<li><a class="reference external" href="#$,Rune">$ proc</a> alias for <tt class="docutils literal"><span class="pre"><span class="Identifier">toUTF8</span></span></tt></li>
<li><a class="reference external" href="#fastToUTF8Copy.t,Rune,string,int">fastToUTF8Copy template</a></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L1366" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L1366" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
</dl>
</div>
<div class="section" id="18">
<h1><a class="toc-backref" href="#18">Templates</a></h1>
<dl class="item">
<div id="fastRuneAt-templates-all">
<div id="fastRuneAt.t,,int,untyped">
<dt><pre><span class="Keyword">template</span> <a href="#fastRuneAt.t%2C%2Cint%2Cuntyped"><span class="Identifier">fastRuneAt</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">]</span> <span class="Keyword">or</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">;</span> <span class="Identifier">result</span><span class="Other">:</span> <a href="system.html#untyped"><span class="Identifier">untyped</span></a><span class="Other">;</span>
<span class="Identifier">doInc</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">)</span></pre></dt>
<dd>
<p>Returns the rune <tt class="docutils literal"><span class="pre">s[i]</span></tt> in <tt class="docutils literal"><span class="pre">result</span></tt>.</p>
<p>If <tt class="docutils literal"><span class="pre">doInc == true</span></tt> (default), <tt class="docutils literal"><span class="pre">i</span></tt> is incremented by the number of bytes that have been processed.</p>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L84" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L84" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
<div id="fastToUTF8Copy-templates-all">
<div id="fastToUTF8Copy.t,Rune,string,int">
<dt><pre><span class="Keyword">template</span> <a href="#fastToUTF8Copy.t%2CRune%2Cstring%2Cint"><span class="Identifier">fastToUTF8Copy</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <a href="unicode.html#Rune"><span class="Identifier">Rune</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">pos</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">;</span> <span class="Identifier">doInc</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">)</span></pre></dt>
<dd>
<p>Copies UTF-8 representation of <tt class="docutils literal"><span class="pre">c</span></tt> into the preallocated string <tt class="docutils literal"><span class="pre">s</span></tt> starting at position <tt class="docutils literal"><span class="pre">pos</span></tt>.</p>
<p>If <tt class="docutils literal"><span class="pre">doInc == true</span></tt> (default), <tt class="docutils literal"><span class="pre">pos</span></tt> is incremented by the number of bytes that have been processed.</p>
<p>To be the most efficient, make sure <tt class="docutils literal"><span class="pre">s</span></tt> is preallocated with an additional amount equal to the byte length of <tt class="docutils literal"><span class="pre">c</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#validateUtf8,string">validateUtf8 proc</a></li>
<li><a class="reference external" href="#toUTF8,Rune">toUTF8 proc</a></li>
<li><a class="reference external" href="#$,Rune">$ proc</a> alias for <tt class="docutils literal"><span class="pre"><span class="Identifier">toUTF8</span></span></tt></li>
</ul>
<a href="https://github.com/nim-lang/Nim/tree/devel/lib/pure/unicode.nim#L207" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
<a href="https://github.com/nim-lang/Nim/edit/devel/lib/pure/unicode.nim#L207" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
</dd>
</div>
</div>
</dl>
</div>
</div>
</div>
<div class="twelve-columns footer">
<span class="nim-sprite"></span>
<br>
<small style="color: var(--hint);">Made with Nim. Generated: 2025-12-28 15:55:04 UTC</small>
</div>
</div>
</div>
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
</body>
</html>