Extension:Scribunto/Lua reference manual/fr: Difference between revisions

Content deleted Content added
DreZhsh (talk | contribs)
No edit summary
FuzzyBot (talk | contribs)
Updating to match new version of source page
 
(10 intermediate revisions by 2 users not shown)
Line 1,591:
===== Captures =====
 
Un motif peut contenir des sous-motifs entre parenthèses ; ils décrivent des ''captures''. Lorsqu'une correspondance réussit, les sous-chaînes de la chaîne d'objet qui correspondent aux captures sont stockées ("capturées") pour une utilisation future. Les captures sont numérotées selon leurs parenthèses gauches. Par exemple, dans le modèle <code>(a*(.)%w(%s*))</code>, la partie de la chaîne correspondant à <code>a*(.)%w(%s*)</code> est stocké en tant que première capture (et porte donc le numéro&nbsp;1) ; le caractère correspondant à <code>.</code> est capturé avec le numéro 2, et la partie correspondant à <code>%s*</code> a le numéro 3.
<div class="mw-translate-fuzzy">
Un motif peut contenir des sous-motifs entre parenthèses ; ils décrivent des ''captures''. Lorsqu'une correspondance réussit, les sous-chaînes de la chaîne d'objet qui correspondent aux captures sont stockées ("capturées") pour une utilisation future. Les captures sont numérotées selon leurs parenthèses gauches. Par exemple, dans le modèle <code>(a*(.)%w(%s*))</code>, la partie de la chaîne correspondant à <code>a*(.)%w(%s*)</code> est stocké en tant que première capture (et porte donc le numéro&nbsp;1) ; le caractère correspondant à <code>.</code> est capturé avec le numéro 2, et la partie correspondant à <code>%s*</code> a le numéro 3.a partie qui concorde avec <code>'%s*'</code> a le numéro&nbsp;3.
</div>
 
Les captures peuvent apparaitre dans la chaine de motif elle-même, et faire référence à une capture faite plus tôt dans le motif. Par exemple, <code>([a-z])%1</code> va correspondre à n'importe quelle paire de lettres en minuscule identiques, tandis que <code>([a-z])([a-z])([a-z])[a-z]%3%2%1</code> correspond à tout palindrome de 7 lettres.
<div class="mw-translate-fuzzy">
Les captures peuvent apparaitre dans la chaine de motif elle-même, et faire référence à une capture faite plus tôt dans le motif. Par exemple, <code>'([a-z])%1'</code> va correspondre à n'importe quelle paire de lettres en minuscule identiques, tandis que <code>([a-z])([a-z])([a-z])[a-z]%3%2%1</code> correspond à tout palindrome de 7 lettres.
</div>
 
La capture vide <code>()</code> est spéciale et capture la position courante dans la chaine (un nombre). Par exemple si on applique le motif <code>"()aa()"</code> sur la chaine <code>"flaaap"</code>, il y aura deux captures : 3 et 5.
<div class="mw-translate-fuzzy">
La capture vide <code>'()'</code> est spéciale et capture la position courante dans la chaine (un nombre). Par exemple si on applique le motif <code>'()aa()'</code> sur la chaine <code>'flaaap'</code>, il y aura deux captures : 3 et 5.
</div>
 
{{red|Limitations connues}} : à la différence des [[#Ustring patterns|motifs de la bibliothèque Ustring]], les motifs de la bibliothèque String ne peuvent pas contenir plus de 32 captures. Si le motif en a plus, alors la fonction String génèrera une erreur. Parce que la bibliothèque Ustring possède sont propre maximum de {{formatnum:10000}} octets pour les motifs (à la différence de la bibliothèque String), il n'est par conséquent pas possible d'utiliser un motif qui dépasserait ces deux limites, car il ne sera pas compatible avec les deux bibliothèques.
Line 1,610 ⟶ 1,604:
La plupart des fonctions de la bibliothèque table supposent que la table soit une [[#sequence|séquence]].
 
Les fonctions <code>table.foreach()</code>, <code>table.foreachi()</code>, et <code>table.getn()</code> sont encore disponibles mais sont obsolètes; utilisez une boucle ''for'' avec <code>table.setn()</code>, une boucle ''for'' avec [[#ipairs|ipairs()]], et l'opérateur de longueur à la place. La fonction <code>table.setn()</code> est complètement obsolète, et génèrera une erreur si elle est utilisée.
<div class="mw-translate-fuzzy">
Les fonctions <code>table.foreach()</code>, <code>table.foreachi()</code>, et <code>table.getn()</code> sont encore disponibles mais sont obsolètes; utilisez une boucle ''for'' avec [[$anchor1|pairs()]], une boucle ''for'' avec [[$anchor2|ipairs()]], et l'opérateur de longueur à la place. La fonction <code>table.setn()</code> est complètement obsolète, et génèrera une erreur si elle est utilisée.
</div>
 
==== table.concat ====
<code style="white-space:nowrap">table.concat( table, sep, i, j )</code>
 
Étant donné un tableau où tous les éléments sont des nombres ou des chaines, on retourne <code style="white-space:nowrap">table[i] .. sep .. table[i+1] ··· sep .. table[j]</code>.
<div class="mw-translate-fuzzy">
Étant donné un tableau où tous les éléments sont des nombres ou des chaines, on retourne <code style="white-space:nowrap">table[ i ] .. sep .. table[ i + 1 ] ··· sep .. table[ j ]</code>.
</div>
 
<div class="mw-translate-fuzzy">
La valeur par défaut de <code>sep</code> est une chaine vide, la valeur par défaut de <code>i</code> est 1, et la valeur par défaut de <code>j</code> est la longueur de la table. Si <code>i</code> est plus grand que <code>j</code>, la fonction retourne une chaine vide.
</div>
 
==== table.insert ====
Line 3,070 ⟶ 3,058:
</div>
 
<div class="mw-translate-fuzzy">
* '''id''': <span lang="en" dir="ltr" class="mw-content-ltr">The page_id. <code>0</code> if the page does not exist.</span> {{red|1=Cela [[#Expensive properties|peut être couteux]]}}.
* '''id''' : l'identifiant de la page. Vaut <code>0</code> si la page n'existe pas.
</div> {{red|1=Cela [[#Expensive properties|peut être couteux]]}}.
* '''interwiki''' : le préfixe interwiki ou une chaine vide si aucun.
* '''namespace''' : le numéro d'espace de noms.
Line 3,092 ⟶ 3,082:
</div>
* '''canTalk''' : indique si la page peut avoir une page de discussion.
<div class="mw-translate-fuzzy">
* '''exists''' : indique si la page existe. Alias pour <code>file.exists</code> pour les médias. Pour l'espace de noms Fichiers c’est l'existence de la description du fichier qui est vérifiée, pas celle du fichier lui-même. {{red|Cela [[#Expensive properties|peut être couteux]]}}
</div>
* '''file''', '''fileExists''' : voir [[#File metadata|ci-dessous]] ;
* '''isContentPage''': vrai si le titre est dans un espace de noms de contenu.
Line 3,104 ⟶ 3,092:
* '''isTalkPage''' : vrai s’il s’agit du titre d’une page de discussion ;
* '''isSubpageOf( titre2 )''' : vrai si la page est une sous-page de titre2 ;
<div class="mw-translate-fuzzy">
* '''inNamespace( ns )''' : vrai si la page est dans l'espace de noms indiqué (<var>ns</var> peut être toute clé trouvée dans <code>[[#mw.site.namespaces|mw.site.namespaces]]</code>) ;
* '''inNamespace( ns )''' : vrai si la page est dans l'espace de noms indiqué (<var>ns</var> peut être toute clé trouvée dans <code>[[$anchor3|mw.site.namespaces]]</code>) ;
</div>
<div class="mw-translate-fuzzy">
* '''inNamespaces( ... )''' : vrai si la page est dans l’un des espaces de nom indiqués (les espaces de noms peuvent être toute clé trouvée dans <code>[[#mw.site.namespaces|mw.site.namespaces]]</code>) ;
</div>
<div class="mw-translate-fuzzy">
* '''hasSubjectNamespace( ns )''' : vrai si l’espace de noms sujet de la page est dans l'espace de noms indiqué. (<var>ns</var> peut être toute clé trouvée dans <code>[[#mw.site.namespaces|mw.site.namespaces]]</code>) ;
</div>
* '''contentModel''' : le type de contenu pour ce titre, sous forme de chaine ({{red|[[#Expensive properties|peut être coûteux]]}}) ;
<includeonly>* '''pageLang''' : La langue de la page pour ce titre, en tant qu’objet de langue similaire à la valeur par défaut renvoyée par <code>[[#mw.language.getContentLanguage|mw.language.getContentLanguage]]</code> mais spécifique à cette page. {{rouge|[[#Expensive properties|peut être coûteux]]}}.</includeonly>
<div class="mw-translate-fuzzy">
* '''basePageTitle''' : identique à <code style="white-space:nowrap">mw.title.makeTitle( title.namespace, title.baseText )</code> ;
</div>
<div class="mw-translate-fuzzy">
* '''rootPageTitle''' : identique à <code style="white-space:nowrap">mw.title.makeTitle( title.namespace, title.rootText )</code> ;
</div>
<div class="mw-translate-fuzzy">
* '''talkPageTitle''' : identique à <code style="white-space:nowrap">mw.title.makeTitle( mw.site.namespaces[title.namespace].talk.id, title.text )</code>, ou <code>nil</code> si la page ne peut pas avoir de page de discussion ;
</div>
* '''subjectPageTitle''' : identique à <code style="white-space:nowrap">mw.title.makeTitle( mw.site.namespaces[title.namespace].subject.id, title.text )</code> ;
* '''redirectTarget''' : retourne un objet ''title'' correspondant à la cible de la redirection si la page est une redirection que cette page existe, <code>false</code> dans les autres cas ;
Line 3,141:
===== Métadonnées des fichiers =====
 
<div class="mw-translate-fuzzy">
Les objets ''title'' représentants des pages dans l’espace de noms Fichier ou Média auront une propriété appelée <code>file</code>. {{red|Celle-ci est [[Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit|couteuse]].}} Il s’agit d’une table avec la structure suivante :
</div>
 
<div class="mw-translate-fuzzy">
* '''exists''' : indique si le fichier existe. Sera enregistré comme une utilisation du fichier. La propriété <code>fileExists</code> de l'objet ''title'' existe pour des raisons de rétro-compatibilité et est un alias de cette propriété. Si <code>false</code>, toutes les autres propriétés de ''file'' seront <code>nil</code> ;
</div>
* '''width''' : la largeur du fichier. Si le fichier contient plusieurs pages, c'est la largeur de la première page ;
* '''height''' : la hauteur du fichier. Si le fichier contient plusieurs pages, c'est la hauteur de la première page ;
<div class="mw-translate-fuzzy">
* '''pages''' : si le format du fichier permet d'avoir plusieurs pages, c'est une table contenant une sous-table pour chaque page du fichier (<code>nil</code> sinon). L’[[#Length operator|opérateur #]] peut être utilisé pour connaitre le nombre de page du fichier. Les sous-tables contiennent les propriétés ''width'' et ''height'' avec la largeur et la hauteur de la page ;
</div>
* '''size''' : la taille du fichier en octets ;
<div class="mw-translate-fuzzy">
* '''mimeType''' : le [[:fr:Type MIME|MIME type]] du fichier.
</div>
* '''length''' : la longueur (durée) du fichier multimédia en secondes. Zéro pour les types de médias qui ne prennent pas en charge la longueur.
 
Line 3,154 ⟶ 3,162:
===== Propriétés coûteuses =====
 
<div class="mw-translate-fuzzy">
Les propriétés <code>id</code>, <code>isRedirect</code>, <code>exists</code>, et <code>contentModel</code> nécessitent d'aller chercher les données à propos de ce titre dans la base de donnée. Pour cette raison le [[Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit|compteur de fonctions coûteuses]] est incrémenté la première fois que l'une d'elles est utilisée pour un titre différent de la page en cours. Les accès suivants à ces propriétés pour la même page n'incrémenteront pas le compteur.
</div>
 
Les autres propriétés indiquées comme coûteuses incrémenteront systématiquement le compteur de fonctions coûteuses la première fois qu'elles sont utilisées pour une page autre que la page en cours.
Line 3,162 ⟶ 3,172:
 
==== mw.uri.encode ====
<code style="white-space:nowrap">mw.uri.encode( s<span lang="en" dir="ltr" class="mw-content-ltr">string, enctype</span> )</code>
 
<div class="mw-translate-fuzzy">
[[:fr:Encodage-pourcent|Encode]] la chaine s au format URL. Le type par défaut <code>'QUERY'</code> encode les espaces en utilisant <code>+</code>, <code>'PATH'</code> les encode en utilisant <code>%20</code> et <code>'WIKI'</code> les encode en utilisant <code>_</code>.
</div>
 
<div class="mw-translate-fuzzy">
Notez que le format <code>'WIKI'</code> n'est pas entièrement réversible puisque les espaces et les underscores ("_") sont encodés de la même façon.
</div>
 
==== mw.uri.decode ====
<code style="white-space:nowrap">mw.uri.decode( s<span lang="en" dir="ltr" class="mw-content-ltr">string, enctype</span> )</code>
 
<div class="mw-translate-fuzzy">
[[:fr:Encodage-pourcent|Décode]] la chaine <var>s</var>. Le type par défaut <code>'QUERY'</code> décode les <code>+</code> en espaces, <code>'PATH'</code> décode les <code>%20</code> en espaces et <code>'WIKI'</code> décode les <code>_</code> en espaces.
</div>
 
==== mw.uri.anchorEncode ====
<code style="white-space:nowrap">mw.uri.anchorEncode( s<span lang="en" dir="ltr" class="mw-content-ltr">string</span> )</code>
 
Encode la chaine pour être utilisée en tant que fragment MediaWiki.
 
==== mw.uri.buildQueryString ====
<code style="white-space:nowrap">mw.uri.buildQueryString( <span lang="en" dir="ltr" class="mw-content-ltr">table</span> )</code>
 
Encode une table en tant que chaine de requête. Les clés doivent être des chaines. Les valeurs peuvent être des chaines, des nombres, des séquences ou ''false''.
Line 3,186 ⟶ 3,202:
<code style="white-space:nowrap">mw.uri.parseQueryString( s, i, j )</code>
 
<div class="mw-translate-fuzzy">
Décode une chaine correspondant à une requête en une table. Les clés qui dans la chaine n'ont aucune valeur prendront la valeur ''false'' ; les clés répétées de multiples fois auront pour valeur des séquences ; les autres auront pour valeur des chaines.
</div>
 
<div class="mw-translate-fuzzy">
Les paramètres numériques optionnels <var>i</var> et <var>j</var> peuvent être utilisés pour indiquer qu’une sous-chaine de <code>s</code> doit être traitée, et pas la chaine en entier. <code>i</code> est la position du premier caractère de la sous-chaine et vaut 1 par défaut. <code>j</code> est la position du dernier caractère de la sous-chaine et vaut la longueur de la chaine par défaut. <code>i</code> et <code>j</code> peuvent tous les deux être négatifs, comme dans [[#string.sub|string.sub]].
Les paramètres numériques optionnels <var>i</var> et <var>j</var> peuvent être utilisés pour indiquer qu’une sous-chaine de <code>s</code> doit être traitée, et pas la chaine en entier. <code>i</code> est la position du premier caractère de la sous-chaine et vaut 1 par défaut. <code>j</code> est la position du dernier caractère de la sous-chaine et vaut la longueur de la chaine par défaut. <code>i</code> et <code>j</code> peuvent tous les deux être négatifs, comme dans [[$anchor|string.sub]].
</div>
 
==== mw.uri.canonicalUrl ====
<code style="white-space:nowrap">mw.uri.canonicalUrl( <span lang="en" dir="ltr" class="mw-content-ltr">page, query</span> )</code>
 
Renvoie un [[#URI object|URI object]] pour le [[Special:MyLanguage/Help:Magic words#URL data|canonique URL]] pour une page, avec une chaîne/table de requête facultative.
 
==== mw.uri.fullUrl ====
<code style="white-space:nowrap">mw.uri.fullUrl( <span lang="en" dir="ltr" class="mw-content-ltr">page, query</span> )</code>
 
Renvoie un [[#URI object|URI object]] pour [[Special:MyLanguage/Help:Magic words#URL data|full URL]] pour une page, avec une chaîne/table de requête facultative.
 
==== mw.uri.localUrl ====
<code style="white-space:nowrap">mw.uri.localUrl( <span lang="en" dir="ltr" class="mw-content-ltr">page, query</span> )</code>
 
Renvoie un [[#URI object|URI object]] pour [[Special:MyLanguage/Help:Magic words#URL data|local URL]] pour une page, avec une chaîne/table de requête facultative.
 
==== mw.uri.new ====
<code style="white-space:nowrap">mw.uri.new( s<span lang="en" dir="ltr" class="mw-content-ltr">string</span> )</code>
 
Construit un nouvel [[#URI object|objet ''uri'']] pour la chaine ou la table <var>s</var>. Voir la description d'un objet ''uri'' pour les champ possible de la table.
 
==== mw.uri.validate ====
<code style="white-space:nowrap">mw.uri.validate( <span lang="en" dir="ltr" class="mw-content-ltr">table</span> )</code>
 
Valide la table (ou l'objet ''uri''). Retourne un booléen indiquant si la table est valide, et en cas d'échec une chaine décrivant les erreurs trouvées.
Line 3,258 ⟶ 3,278:
=== Bibliothèque ustring ===
 
<div class="mw-translate-fuzzy">
La bibliothèque ''ustring'' est une ré-implémentation de la bibliothèque standard [[#String library|string]], à la différence qu'elle peut opérer sur des caractères encodés en UTF-8.
</div>
 
La plupart des fonctions génèrent une erreur si la chaine n'est pas valide en codage UTF-8
Line 3,271 ⟶ 3,293:
<code style="white-space:nowrap">mw.ustring.byte( s, i, j )</code>
 
<div class="mw-translate-fuzzy">
Retourne les octets d'une chaine. Identique à [[#string.byte|string.byte()]].
Retourne les octets d'une chaine. Identique à [[$anchor|string.byte()]].
</div>
 
==== mw.ustring.byteoffset ====
<code style="white-space:nowrap">mw.ustring.byteoffset( s, l, i )</code>
 
<div class="mw-translate-fuzzy">
Retourne la position en octets dans la chaine du <var>n</var><sup>ième</sup> caractère de la chaine à partir de l'octet <var>i</var>. Par défaut <var>n</var> et <var>i</var> valent 1. <var>i</var> peut être négatif auquel cas l'octet de départ est compté à partir de la fin.
</div>
 
Le caractère <var>n</var> == 1 est le premier caractère commençant à ou après l'octet <var>i</var> ;<br>
Line 3,285 ⟶ 3,311:
<code style="white-space:nowrap">mw.ustring.char( ... )</code>
 
<div class="mw-translate-fuzzy">
Similaire à [[#string.char|string.char()]], mais les paramètre sont des points de codes Unicode et non des octets.
Similaire à [[$anchor|string.char()]], mais les paramètre sont des points de codes Unicode et non des octets.
</div>
 
<syntaxhighlight lang="lua">
Line 3,294 ⟶ 3,322:
<code style="white-space:nowrap">mw.ustring.codepoint( s, i, j )</code>
 
<div class="mw-translate-fuzzy">
Similaire à [[#string.byte|string.byte()]], mais les valeurs retournées sont des points de code Unicode et les positions sont celles des caractères et non des octets.
Similaire à [[$anchor|string.byte()]], mais les valeurs retournées sont des points de code Unicode et les positions sont celles des caractères et non des octets.
</div>
 
==== mw.ustring.find ====
<code style="white-space:nowrap">mw.ustring.find( s, pattern, init, plain )</code>
 
<div class="mw-translate-fuzzy">
Similaire à [[#string.find|string.find()]], mais le motif est géré comme décrit dans [[#Ustring patterns|motifs ustring]] et la position <var>init</var> est en caractères et non en octets.
Similaire à [[$anchor1|string.find()]], mais le motif est géré comme décrit dans [[#Ustring patterns|motifs ustring]] et la position <var>init</var> est en caractères et non en octets.
</div>
 
==== mw.ustring.format ====
<code style="white-space:nowrap">mw.ustring.format( <span lang="en" dir="ltr" class="mw-content-ltr">format</span>, ... )</code>
 
<div class="mw-translate-fuzzy">
Identique à [[#string.format|string.format()]]. Les tailles et précisions pour les chaines sont toujours en octets et non en points de code Unicode.
Identique à [[$anchor|string.format()]]. Les tailles et précisions pour les chaines sont toujours en octets et non en points de code Unicode.
</div>
 
==== mw.ustring.gcodepoint ====
<code style="white-space:nowrap">mw.ustring.gcodepoint( s, i, j )</code>
 
<div class="mw-translate-fuzzy">
Retourne trois valeurs pour itérer sur les points de code Unicode de la chaine. <var>i</var> vaut 1 par défaut et <var>j</var> vaut -1 par défaut. Ça sert à être utilisé par la [[#iterators|forme itérateur de <code>for</code>]] :
</div>
 
<syntaxhighlight lang="lua">
Line 3,320 ⟶ 3,356:
<code style="white-space:nowrap">mw.ustring.gmatch( s, pattern )</code>
 
<div class="mw-translate-fuzzy">
Similaire à [[#string.gmatch|string.gmatch()]], mais le motif est géré comme décrit dans [[#Ustring patterns|motifs ustring]].
Similaire à [[$anchor1|string.gmatch()]], mais le motif est géré comme décrit dans [[#Ustring patterns|motifs ustring]].
</div>
 
{{red|Known bug}}: When used with a pattern which can match the empty string, the function will get stuck in an infinite loop. For example, the following loop never terminates:
Line 3,333 ⟶ 3,371:
<code style="white-space:nowrap">mw.ustring.gsub( s, pattern, repl, n )</code>
 
<div class="mw-translate-fuzzy">
Similaire à [[#string.gsub|string.gsub()]], mais le motif est géré comme décrit dans [[#Ustring patterns|motifs ustring]].
Similaire à [[$anchor1|string.gsub()]], mais le motif est géré comme décrit dans [[#Ustring patterns|motifs ustring]].
</div>
 
{{red|Bogues connus}}: si <code>repl</code> est un tableau, on peut utiliser des nombres comme clé au lieu de chaînes de caractères (par exemple pour remplacer les instances de {{code|lang=lua|inline=1|"5"}} dans une chaîne, la valeur pour la clé {{code|lang=lua|inline=1|[5]}} ou {{code|lang=lua|inline=1|["5"]}} serait utilisée); en conséquence la sortie est imprévisible s'ils ont des valeurs différentes (non nulles).
<span class="mw-translate-fuzzy">Ce n'est pas un problème pour [[#string.gsub$anchor1|string.gsub()]] qui ignore les clés numériques.</span>
 
==== mw.ustring.isutf8 ====
<code style="white-space:nowrap">mw.ustring.isutf8( s<span lang="en" dir="ltr" class="mw-content-ltr">string</span> )</code>
 
Retourne ''true'' si la chaine est en UTF-8 valide, ''false'' sinon.
 
==== mw.ustring.len ====
<code style="white-space:nowrap">mw.ustring.len( s<span lang="en" dir="ltr" class="mw-content-ltr">string</span> )</code>
 
Retourne la longueur de la chaine en point de code Unicode ou ''nil'' si la chaine n'est pas valide en UTF-8.
 
<div class="mw-translate-fuzzy">
Voir [[#string.len|string.len()]] pour une fonction similaire qui utilise la longueur en octets plutôt que des points de code.
Voir [[$anchor|string.len()]] pour une fonction similaire qui utilise la longueur en octets plutôt que des points de code.
</div>
 
==== mw.ustring.lower ====
<code style="white-space:nowrap">mw.ustring.lower( s<span lang="en" dir="ltr" class="mw-content-ltr">string</span> )</code>
 
<div class="mw-translate-fuzzy">
Similaire à [[#string.lower|string.lower()]] à part que la fonction suit le format Unicode.
Similaire à [[$anchor|string.lower()]] à part que la fonction suit le format Unicode.
</div>
 
<div class="mw-translate-fuzzy">
Si la [[#Language library|bibliothèque ''language'']] est également chargée, ceci utilisera [[#mw.language:lc|lc()]] sur la langue courante à la place.
Si la [[#Language library|bibliothèque ''language'']] est également chargée, ceci utilisera [[$anchor2|lc()]] sur la langue courante à la place.
</div>
 
==== mw.ustring.match ====
<code style="white-space:nowrap">mw.ustring.match( s, pattern, init )</code>
 
<div class="mw-translate-fuzzy">
Similaire à [[#string.match|string.match()]], mais le motif est géré comme décrit dans [[#Ustring patterns|motifs ustring]] et la position <var>init</var> est en caractères et non en octets.
Similaire à [[$anchor1|string.match()]], mais le motif est géré comme décrit dans [[#Ustring patterns|motifs ustring]] et la position <var>init</var> est en caractères et non en octets.
</div>
 
==== mw.ustring.rep ====
<code style="white-space:nowrap">mw.ustring.rep( s<span lang="en" dir="ltr" class="mw-content-ltr">string, n</span> )</code>
 
<div class="mw-translate-fuzzy">
Identique à [[#string.rep|string.rep()]].
Identique à [[$anchor|string.rep()]].
</div>
 
==== mw.ustring.sub ====
<code style="white-space:nowrap">mw.ustring.sub( s, i, j )</code>
 
<div class="mw-translate-fuzzy">
Similaire à [[#string.sub|string.sub()]], mais les positions sont en caractères et non en octets.
Similaire à [[$anchor|string.sub()]], mais les positions sont en caractères et non en octets.
</div>
 
==== mw.ustring.toNFC ====
<code style="white-space:nowrap">mw.ustring.toNFC( s<span lang="en" dir="ltr" class="mw-content-ltr">string</span> )</code>
 
Convertit la chaîne en [[:fr:Normalisation Unicode|forme normalisée C]] (connu également comme ''composition canonique de la forme normalisée''). Renvoie ''nil'' si la chaîne n'est pas un UTF-8 valide.