CINXE.COM
Visualizza wikitesto di Modulo:String - Wikipedia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-disabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-not-available" lang="it" dir="ltr"> <head> <meta charset="UTF-8"> <title>Visualizza wikitesto di Modulo:String - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-disabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-not-available";var cookie=document.cookie.match(/(?:^|; )itwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":true,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat": "dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"ca1ce05e-0c83-47d6-925d-048750e7e542","wgCanonicalNamespace":"Module","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":828,"wgPageName":"Modulo:String","wgTitle":"String","wgCurRevisionId":126762187,"wgRevisionId":0,"wgArticleId":4470159,"wgIsArticle":false,"wgIsRedirect":false,"wgAction":"edit","wgUserName":null,"wgUserGroups":["*"],"wgCategories":[],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"Scribunto","wgRelevantPageName":"Modulo:String","wgRelevantArticleId":4470159,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":["sysop"],"wgRestrictionMove":["sysop"],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en", "pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":30000,"wgCodeEditorCurrentLanguage":"lua","wgRelatedArticlesCompat":[],"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.codeEditor.styles":"ready" ,"skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.charinsert.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.codeEditor","ext.scribunto.edit","mediawiki.action.edit.collapsibleFooter","site","mediawiki.page.ready","skins.vector.js","ext.centralNotice.geoIP","ext.charinsert","ext.gadget.stru-commonsupload","ext.gadget.HiddenCat","ext.gadget.ReferenceTooltips","ext.urlShortener.toolbar","ext.centralauth.centralautologin","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.checkUser.clientHints","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=it&modules=ext.charinsert.styles%7Cext.codeEditor.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=it&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=it&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.5"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="noindex,nofollow,max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Visualizza wikitesto di Modulo:String - Wikipedia"> <meta property="og:type" content="website"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//it.m.wikipedia.org/wiki/Modulo:String"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (it)"> <link rel="EditURI" type="application/rsd+xml" href="//it.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://it.wikipedia.org/wiki/Modulo:String"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.it"> <link rel="alternate" type="application/atom+xml" title="Feed Atom di Wikipedia" href="/w/index.php?title=Speciale:UltimeModifiche&feed=atom"> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="codeeditor-loading skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-828 ns-subject page-Modulo_String rootpage-Modulo_String skin-vector-2022 action-edit"><a class="mw-jump-link" href="#bodyContent">Vai al contenuto</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Sito"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Menu principale" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Menu principale</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Menu principale</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">sposta nella barra laterale</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">nascondi</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigazione </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Pagina_principale" title="Visita la pagina principale [z]" accesskey="z"><span>Pagina principale</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Speciale:UltimeModifiche" title="Elenco delle ultime modifiche del sito [r]" accesskey="r"><span>Ultime modifiche</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Speciale:PaginaCasuale" title="Mostra una pagina a caso [x]" accesskey="x"><span>Una voce a caso</span></a></li><li id="n-nearby-pages-title" class="mw-list-item"><a href="/wiki/Speciale:NelleVicinanze"><span>Nelle vicinanze</span></a></li><li id="n-vetrina" class="mw-list-item"><a href="/wiki/Wikipedia:Vetrina"><span>Vetrina</span></a></li><li id="n-help" class="mw-list-item"><a href="/wiki/Aiuto:Aiuto" title="Pagine di aiuto"><span>Aiuto</span></a></li><li id="n-Sportello-informazioni" class="mw-list-item"><a href="/wiki/Aiuto:Sportello_informazioni"><span>Sportello informazioni</span></a></li> </ul> </div> </div> <div id="p-Comunità" class="vector-menu mw-portlet mw-portlet-Comunità" > <div class="vector-menu-heading"> Comunità </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-portal" class="mw-list-item"><a href="/wiki/Portale:Comunit%C3%A0" title="Descrizione del progetto, cosa puoi fare, dove trovare le cose"><span>Portale Comunità</span></a></li><li id="n-villagepump" class="mw-list-item"><a href="/wiki/Wikipedia:Bar"><span>Bar</span></a></li><li id="n-wikipediano" class="mw-list-item"><a href="/wiki/Wikipedia:Wikipediano"><span>Il Wikipediano</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="/wiki/Wikipedia:Contatti"><span>Contatti</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Pagina_principale" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="L'enciclopedia libera" src="/static/images/mobile/copyright/wikipedia-tagline-it.svg" width="120" height="13" style="width: 7.5em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Speciale:Ricerca" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Cerca in Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Ricerca</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Cerca in Wikipedia" aria-label="Cerca in Wikipedia" autocapitalize="sentences" title="Cerca in Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Speciale:Ricerca"> </div> <button class="cdx-button cdx-search-input__end-button">Ricerca</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Strumenti personali"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Aspetto"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Modifica la dimensione, la larghezza e il colore del testo" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Aspetto" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Aspetto</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_it.wikipedia.org&uselang=it" class=""><span>Fai una donazione</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Speciale:CreaUtenza&returnto=Modulo%3AString&returntoquery=action%3Dedit" title="Si consiglia di registrarsi e di effettuare l'accesso, anche se non è obbligatorio" class=""><span>registrati</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Speciale:Entra&returnto=Modulo%3AString&returntoquery=action%3Dedit" title="Si consiglia di effettuare l'accesso, anche se non è obbligatorio [o]" accesskey="o" class=""><span>entra</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Altre opzioni" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Strumenti personali" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Strumenti personali</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="Menu utente" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_it.wikipedia.org&uselang=it"><span>Fai una donazione</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Speciale:CreaUtenza&returnto=Modulo%3AString&returntoquery=action%3Dedit" title="Si consiglia di registrarsi e di effettuare l'accesso, anche se non è obbligatorio"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>registrati</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Speciale:Entra&returnto=Modulo%3AString&returntoquery=action%3Dedit" title="Si consiglia di effettuare l'accesso, anche se non è obbligatorio [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>entra</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pagine per utenti anonimi <a href="/wiki/Aiuto:Benvenuto" aria-label="Ulteriori informazioni sulla contribuzione"><span>ulteriori informazioni</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Speciale:MieiContributi" title="Un elenco delle modifiche fatte da questo indirizzo IP [y]" accesskey="y"><span>contributi</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Speciale:MieDiscussioni" title="Discussioni sulle modifiche fatte da questo indirizzo IP [n]" accesskey="n"><span>discussioni</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Sito"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <h1 id="firstHeading" class="firstHeading mw-first-heading">Visualizza wikitesto di Modulo:String</h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Questa voce esiste solo in questa lingua. Aggiungi la voce per altre lingue" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-0" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">Aggiungi lingue</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> <div class="after-portlet after-portlet-lang"><span class="uls-after-portlet-link"></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespace"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-module" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Modulo:String" title="Vedi la pagina del modulo [c]" accesskey="c"><span>Modulo</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Discussioni_modulo:String" rel="discussion" title="Vedi le discussioni relative a questa pagina [t]" accesskey="t"><span>Discussione</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Cambia versione linguistica" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Visite"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="vector-tab-noicon mw-list-item"><a href="/wiki/Modulo:String"><span>Leggi</span></a></li><li id="ca-viewsource" class="selected vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Modulo:String&action=edit" title="Questa pagina è protetta, ma puoi vedere il suo codice sorgente [e]" accesskey="e"><span>Visualizza sorgente</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Modulo:String&action=history" title="Versioni precedenti di questa pagina [h]" accesskey="h"><span>Cronologia</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Strumenti pagine"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Strumenti" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Strumenti</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Strumenti</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">sposta nella barra laterale</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">nascondi</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="Altre opzioni" > <div class="vector-menu-heading"> Azioni </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="vector-more-collapsible-item mw-list-item"><a href="/wiki/Modulo:String"><span>Leggi</span></a></li><li id="ca-more-viewsource" class="selected vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Modulo:String&action=edit"><span>Visualizza sorgente</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Modulo:String&action=history"><span>Cronologia</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> Generale </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Speciale:PuntanoQui/Modulo:String" title="Elenco di tutte le pagine che sono collegate a questa [j]" accesskey="j"><span>Puntano qui</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Speciale:ModificheCorrelate/Modulo:String" rel="nofollow" title="Elenco delle ultime modifiche alle pagine collegate a questa [k]" accesskey="k"><span>Modifiche correlate</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Speciale:PagineSpeciali" title="Elenco di tutte le pagine speciali [q]" accesskey="q"><span>Pagine speciali</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Modulo:String&action=info" title="Ulteriori informazioni su questa pagina"><span>Informazioni pagina</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Speciale:UrlShortener&url=https%3A%2F%2Fit.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DModulo%3AString%26action%3Dedit"><span>Ottieni URL breve</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Speciale:QrCode&url=https%3A%2F%2Fit.wikipedia.org%2Fw%2Findex.php%3Ftitle%3DModulo%3AString%26action%3Dedit"><span>Scarica codice QR</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In altri progetti </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q7253814" title="Collegamento all'elemento connesso dell'archivio dati [g]" accesskey="g"><span>Elemento Wikidata</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Strumenti pagine"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Aspetto"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Aspetto</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">sposta nella barra laterale</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">nascondi</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> </div> <div id="contentSub"><div id="mw-content-subtitle">← <a href="/wiki/Modulo:String" title="Modulo:String">Modulo:String</a></div></div> <div id="mw-content-text" class="mw-body-content"><p>Non si dispone dei permessi necessari per modificare questa pagina, per i seguenti motivi: </p> <ul class="permissions-errors"><li class="mw-permissionerror-protectedpagetext">Questa pagina è stata protetta per impedirne la modifica o altre operazioni.</li><li class="mw-permissionerror-cascadeprotected">Su questa pagina non è possibile effettuare modifiche perché è inclusa nelle pagine indicate di seguito, che sono state protette selezionando la protezione "ricorsiva": <ul><li><a href="/wiki/Progetto:Coordinamento/Template/Template_bloccati/Bandierine" title="Progetto:Coordinamento/Template/Template bloccati/Bandierine">Progetto:Coordinamento/Template/Template bloccati/Bandierine</a></li> <li><a href="/wiki/Wikipedia:Richieste_di_revisione_del_blocco" title="Wikipedia:Richieste di revisione del blocco">Wikipedia:Richieste di revisione del blocco</a></li></ul> </li><li class="mw-permissionerror-globalblocking-blockedtext-range"><b>Il tuo indirizzo IP è in un intervallo che è stato <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/Global_blocks" class="extiw" title="m:Special:MyLanguage/Global blocks">bloccato su tutti i wiki della Wikimedia Foundation</a>.</b> Il blocco è stato eseguito da <a href="/wiki/Utente:Jon_Kolbert" title="Utente:Jon Kolbert">Jon Kolbert</a>. La motivazione fornita è <i><a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/NOP" class="extiw" title="m:Special:MyLanguage/NOP">Open proxy/Webhost</a>: See the <a href="https://meta.wikimedia.org/wiki/WM:OP/H" class="extiw" title="m:WM:OP/H">help page</a> if you are affected </i>. <ul><li>Inizio del blocco: 16:12, 27 ago 2023</li> <li>Fine del blocco: 16:12, 27 ago 2028</li></ul> Il tuo indirizzo IP attuale è 8.222.208.146. L'intervallo bloccato è 8.222.128.0/17. Si prega di specificare tutti i dettagli qui inclusi nel compilare qualsiasi richiesta di chiarimenti. Se ritieni di essere stato bloccato per errore, puoi trovare ulteriori informazioni e istruzioni nella policy globale <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/No_open_proxies" class="extiw" title="m:Special:MyLanguage/No open proxies">Niente proxy aperti</a>. Altrimenti, per discutere del blocco <a href="https://meta.wikimedia.org/wiki/Steward_requests/Global" class="extiw" title="m:Steward requests/Global">inserisci una richiesta di riesame su Meta-Wiki</a>. Puoi anche inviare un'e-mail alla coda <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/Stewards" class="extiw" title="m:Special:MyLanguage/Stewards">stewards</a> <a href="https://meta.wikimedia.org/wiki/Special:MyLanguage/VRT" class="extiw" title="m:Special:MyLanguage/VRT">VRT</a> all'indirizzo <kbd>stewards@wikimedia.org</kbd> includendo tutti i dettagli di cui sopra.</li></ul><hr /> <p>È possibile visualizzare e copiare il codice sorgente di questa pagina. </p><textarea readonly="" accesskey="," id="wpTextbox1" cols="80" rows="25" style="" class="mw-editfont-monospace" lang="en" dir="ltr" name="wpTextbox1">--[[ Questo modulo serve a fornire l'accesso alle funzioni stringa base. La maggior parte delle funzioni di questo modulo possono essere invocate con parametri con nome, senza nome o con un misto di entrambi. Quando vengono usati parametri con nome il software di Mediawiki rimuoverà ogni spazio iniziale o finale dal parametro. A seconda dell'uso che si vuole fare della funzione può essere vantaggioso conservare oppure rimuovere questi spazi. Opzioni globali ignore_errors: se settato a 'true' o 1, ogni condizione di errore ritornerà una stringa vuota piuttosto che un messaggio di errore. error_category: nel caso si verifichi un errore è il nome di una categoria da includere insieme al messaggio di errore. La categoria di default [Categoria:Errori del Module String]. (TODO:verificare) no_category: Se settato a 'true' o 1, non verranno aggiunte categorie in caso di errore. Unit tests per questo modulo sono disponibili a Module:String/test. Diverse funzioni fanno uso di pattern Lua, questi sono una forma di espressione regolare, per maggiori informazioni vedi: * http://www.lua.org/manual/5.1/manual.html#5.4.1 * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns * http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns ]] local str = {} --[[ len Questa funzione ritorna la lunghezza di una stringa. Uso: {{#invoke:String|len|stringa|}} O {{#invoke:String|len|s=stringa}} Parametri s: La stringa di cui ritornare la lunghezza Se invocata usando parametri nominati, Mediawiki rimuoverà automaticamente ogni spazio iniziale o finale dalla stringa. ]] function str.len( frame ) local new_args = str._getParameters( frame.args, {'s'} ); local s = new_args['s'] or ''; return mw.ustring.len( s ) end --[[ sub Questa funzione ritorna la sottostringa di una stringa bersaglio, come indicato dagli indici Uso: {{#invoke:String|sub|stringa_bersaglio|indice_iniziale|indice_finale}} O {{#invoke:String|sub|s=stringa_bersaglio|i=indice_iniziale|j=indice_finale}} Parameters s: La stringa da cui estrarre una sottostringa i: La posizione iniziale del primo carattere della sottostringa da ritornare, se non specificato è 1. j: La posizione finale dell'ultimo carattere della sottostringa da ritornare, se non specificato corrisponde alla lunghezza della stringa_bersaglio (l'ultimo carattere). I caratteri della stringa sono numerati a partire da 1. Se i o j hanno un valore negativo allora contano la posizione contando dalla fine della stringa, -1 è l'ultimo carattere della stringa, -2 il penultimo, ecc... Se le posizioni sono al di fuori degli estremi della stringa viene ritornato un messaggio di errore. ]] function str.sub( frame ) local new_args = str._getParameters( frame.args, { 's', 'i', 'j' } ); local s = new_args['s'] or ''; local i = tonumber( new_args['i'] ) or 1; local j = tonumber( new_args['j'] ) or -1; local len = mw.ustring.len( s ); -- Convert negatives for range checking if i < 0 then i = len + i + 1; end if j < 0 then j = len + j + 1; end if i > len or j > len or i < 1 or j < 1 then return str._error( 'Indici fuori dagli estremi della stringa' ); end if j < i then return str._error( 'Indici in ordine sbagliato' ); end return mw.ustring.sub( s, i, j ) end --[[ Questa funzione implementa tutte le caratteristiche di {{str sub}} e viene mantenuta per motivi di compatibilità con template più vecchi. ]] function str.sublength( frame ) local i = tonumber( frame.args.i ) or 0 local len = tonumber( frame.args.len ) return mw.ustring.sub( frame.args.s, i + 1, len and ( i + len ) ) end --[[ match Questa funzione ritorna dalla stringa bersaglio una sottostringa corrispondente a un pattern specificato. Uso: {{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}} O {{#invoke:String|match|s=source_string|pattern=pattern_string|start=start_index |match=match_number|plain=plain_flag|nomatch=nomatch_output}} Parametri s: La stringa da cercare pattern: Il pattern da cercare nella stringa start: La posizione iniziale da cui iniziare la ricerca, se non specificato è 1. match: Se c'è ci sono corrispondenze multiple quale ritornare, 1 per la prima corrispondenza, 2 per la seconda ecc.. Un valore negativo indica di contare all'indietro a partire dall'ultima corrispondenza, quindi match = -1 significa chiedere l'ultima corrispondenza. Se non specificato è 1 plain: Se vero specifica che il pattern deve essere considerato come una stringa normale, piuttosto che un pattern Lua. Se non specificata è falsa. nomatch: Il valore da ritornare se non ci sono corrispondenze, invece di ritornare un errore. Se richiamata usando parametri nominati Mediawiki rimuoverà automaticamente tutti gli spazi iniziali e finali. In alcune circostanze questo può essere il comportamento desiderato, in altre si potrebbe volerli conservare. Se match_number o start_index sono al di fuori degli estremi della stringa s, allora la funzione ritorna un errore. Viene generato un errore anche se il non vengono trovate corrispondenze. Per sopprimere gli errori si può aggiungere il parametro ignore_errors=true, in questo caso in caso di errore verrò ritornata una stringa vuota. ]] function str.match(frame) return str._match(frame.args) end --[[ Entry point per chiamata diretta da un modulo ]] function str._match( args ) local new_args = str._getParameters( args, {'s', 'pattern', 'start', 'match', 'plain', 'nomatch'} ); local s = new_args['s'] or ''; local start = tonumber( new_args['start'] ) or 1; local plain_flag = str._getBoolean( new_args['plain'] or false ); local pattern = new_args['pattern'] or ''; local match_index = math.floor( tonumber(new_args['match']) or 1 ); local nomatch = new_args['nomatch']; if s == '' then return nomatch or str._error( 'La stringa in cui cercare è vuota' ); end if pattern == '' then return nomatch or str._error( 'La stringa o pattern da cercare è vuota' ); end if math.abs(start) < 1 or math.abs(start) > mw.ustring.len( s ) then return nomatch or str._error( 'La posizione iniziale richiesta è fuori dagli estremi della stringa' ); end if match_index == 0 then return nomatch or str._error( 'Match index è nullo' ); end if plain_flag then pattern = str._escapePattern( pattern ); end local result if match_index == 1 then -- Il caso più semplice, trova la prima corrispondenza result = mw.ustring.match( s, pattern, start ) else if start > 1 then s = mw.ustring.sub( s, start ); end local iterator = mw.ustring.gmatch(s, pattern); if match_index > 0 then -- Ricerca in avanti for w in iterator do match_index = match_index - 1; if match_index == 0 then result = w; break; end end else -- Ricerca all'indietro deve estrarre tutte le corrispondenze local result_table = {}; local count = 1; for w in iterator do result_table[count] = w; count = count + 1; end result = result_table[ count + match_index ]; end end if result == nil then if nomatch == nil then return str._error( 'Corrispondenza non trovata' ); else return nomatch; end else return result; end end --[[ pos Questa funzione ritorna il carattere della stringa in posizione pos. Uso: {{#invoke:String|pos|stringa_bersaglio|indice}} O {{#invoke:String|pos|target=stringa_bersaglio|pos=indice}} Parametri target: La stringa in cui cercare pos: La posizione del carattere da ritornare Se richiamata usando parametri nominati Mediawiki rimuoverà automaticamente tutti gli spazi iniziali e finali. In alcune circostanze questo può essere il comportamento desiderato, in altre si potrebbe volerli conservare. I caratteri della stringa sono numerati a partire da 1. Se pos è un valore negativo allora conta la posizione partendo dalla fine della stringa, -1 è l'ultimo carattere della stringa, -2 il penultimo, ecc... Se la posizione richiesta è 0 o al di fuori degli estremi della stringa viene ritornato un errore. ]] function str.pos( frame ) local new_args = str._getParameters( frame.args, {'target', 'pos'} ); local target_str = new_args['target'] or ''; local pos = tonumber( new_args['pos'] ) or 0; if pos == 0 or math.abs(pos) > mw.ustring.len( target_str ) then return str._error( 'Indice della stringa fuori dagli estremi' ); end return mw.ustring.sub( target_str, pos, pos ); end --[[ str_find Questa funzione duplica il comportamento di {{str_find}}, incluso i suoi comportamenti irregolari. Questa funzione è fornita per motivi di compatibilità con i vecchi template, ma SI RACCOMANDA di non utilizzarla in nuovi template. Nello sviluppo di nuovo codice si raccomanda di usare la funzione "find". Parametri source: La stringa in cui cercare target: la stringa da cercare Ritorna la posizione nella stringa source del primo carattere in cui c'è è stata trovata la stringa target. I caratteri della stringa sono numerati a partire da 1. La funzione ritorna -1 se la stringa "target" non è contenuta in "source". Nota importante: Per compatibilità con il vecchio template se la stringa "target" è vuota o manca la funzione ritorna un valore di "1" ]] function str.str_find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target'} ); local source_str = new_args['source'] or ''; local target_str = new_args['target'] or ''; if target_str == '' then return 1; end local start = mw.ustring.find( source_str, target_str, 1, true ) if start == nil then start = -1 end return start end --[[ find Questa funzione permette di cercare una stringa bersaglio o un pattern Lua all'interno di un'altra stringa. Uso: {{#invoke:String|find|stringa_sorgente|stringa_bersaglio|indice_iniziale|plain_flag}} O {{#invoke:String|find|source=stringa_sorgente|target=stringa_bersaglio|start=indice_iniziale|plain=plain_flag}} Parametri source: La stringa in cui cercare target: La stringa o pattern Lua da cercare start: La posizione da cui iniziare la ricerca, se non specificato è 1 plain: Se è vero indica che la stringa target deve essere considerata come una testo normale e non come un pattern Lua, se non specificata è vera Se richiamata usando parametri nominati Mediawiki rimuoverà automaticamente tutti gli spazi iniziali e finali. In alcune circostanze questo può essere il comportamento desiderato, in altre si potrebbe volerli conservare. Questa funzione ritorna la prima posizione maggiore o uguale a "start" a partire dalla quale "target" si trova in "source". I caratteri della stringa sono numerati a partire da 1. Se "target" non viene trovato ritorna 0. Se "source" o "target" sono mancanti o vuoti ritorna 0. Questa funzione dovrebbe essere sicura per stringhe UTF-8. ]] function str.find( frame ) local new_args = str._getParameters( frame.args, {'source', 'target', 'start', 'plain' } ); local source_str = new_args['source'] or ''; local pattern = new_args['target'] or ''; local start_pos = tonumber(new_args['start']) or 1; local plain = new_args['plain'] or true; if source_str == '' or pattern == '' then return 0; end plain = str._getBoolean( plain ); local start = mw.ustring.find( source_str, pattern, start_pos, plain ) if start == nil then start = 0 end return start end --[[ replace Questa funzione permette di rimpiazzare una stringa o pattern bersaglio con un'altra stringa. Uso: {{#invoke:String|replace|stringa_sorgente|stringa_pattern|nuova_stringa|numero_di_sostituzioni|plain_flag}} O {{#invoke:String|replace|source=stringa_sorgente|pattern=stringa_pattern|replace=nuova_stringa| count=numero_di_sostituzioni|plain=plain_flag}} Parametri: source: La stringa da cercare pattern: La stringa o pattern Lua da trovare in source replace: Il testo di sostituzione count: Il numero di volte in cui rimpiazzare la stringa, se non specificato tutte. plain: Se vero indica che il pattern deve essere considerato come testo normale e non come pattern Lua, il valore di default è vero ]] function str.replace( frame ) local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } ); local source_str = new_args['source'] or ''; local pattern = new_args['pattern'] or ''; local replace = new_args['replace'] or ''; local count = tonumber( new_args['count'] ); local plain = new_args['plain'] or true; if source_str == '' or pattern == '' then return source_str; end plain = str._getBoolean( plain ); if plain then pattern = str._escapePattern( pattern ); replace = mw.ustring.gsub( replace, "%%", "%%%%" ); --Only need to escape replacement sequences. end local result; if count ~= nil then result = mw.ustring.gsub( source_str, pattern, replace, count ); else result = mw.ustring.gsub( source_str, pattern, replace ); end return result; end --[[ Funzione per utilizzare string.rep in un template. ]] function str.rep( frame ) local repetitions = tonumber( frame.args[2] ) if not repetitions then if frame.args[2] == '' then -- se il secondo parametro è una stringa nulla ritorno una stringa nulla return '' else return str._error( 'la funzione rep si aspetta un secondo parametro con il numero di ripetizioni, ricevuto "' .. ( frame.args[2] or '' ) .. '"' ) end end return mw.ustring.rep( frame.args[1] or '', repetitions ) end --[[ Funzione per decodificare una stringa codificata percentualmente. Richiama la funzione mw.uri.decode di scribunto, vedi https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#mw.uri.decode ]] function str.decode( frame ) local valid_enctype = { QUERY = true, WIKI = true, PATH = true} local new_args = str._getParameters(frame.args, {'source', 'enctype'}) local source = new_args['source'] or '' local enc_type = new_args['enctype'] or 'QUERY' if not valid_enctype[enc_type] then enc_type = 'QUERY' end return mw.uri.decode(source, enc_type) end --[[ Funzione per semplificare stringhe con diacritici ]] function str.collate( frame ) local collation = { {'[áàăắằẵẳâấầẫẩǎåǻäǟãȧǡąāảȁȃạặậḁⱥᶏᴂæɐᶐɒə]', 'a'}, {'[ÁÀĂẮẰẴẲÂẤẦẪẨǍÅÅǺÄǞÃȦǠĄĀẢȀȂẠẶẬḀȺᴁÆƏ]', 'A'}, {'[ḃḅḇƀɓ]', 'b'}, {'[ḂḄḆɃ]', 'B'}, {'[ćĉčċçḉȼƈ]', 'c'}, {'[ĆĈČĊÇḈȻƇ]', 'C'}, {'[đḍḓḏðďḋḑ]', 'd'}, {'[ĐḌḒḎÐĎḊḐ]', 'D'}, {'[éèĕěêếềễểëẽėȩḝęēḗḕẻȅȇẹệḙḛǝ]', 'e'}, {'[ÉÈĔĚÊẾỀỄỂËẼĖȨḜĘĒḖḔẺȄȆẸỆḘḚƎ]', 'E'}, {'[ḟⅎ]', 'f'}, {'[ḞℲ]', 'F'}, {'[ǵğĝǧġģḡᵹɠ]', 'g'}, {'[ǴĞĜǦĠĢḠƓ]', 'G'}, {'[ĥȟḧḣḩħḥḫẖ]', 'h'}, {'[ĤȞḦḢḨĦḤḪ]', 'H'}, {'[íìĭîǐïḯĩįīỉȉȋịḭı]', 'i'}, {'[ÍÌĬÎǏÏḮĨĮĪỈȈȊỊḬİ]', 'I'}, {'[ĵǰ]', 'j'}, {'[Ĵ]', 'J'}, {'[ḱǩķ]', 'k'}, {'[ḰǨĶ]', 'K'}, {'[ĺľļłḷḹḽḻl·l·ŀƚⱡ]', 'l'}, {'[ĹĽĻŁḶḸḼḺL·L·ĿȽⱠ]', 'L'}, {'[ḿṁṃ]', 'm'}, {'[ḾṀṂ]', 'M'}, {'[ńǹňñṅņṇṋṉ]', 'n'}, {'[ŃǸŇÑṄŅṆṊṈ]', 'N'}, {'[óòŏốồỗổǒôöȫőõṍṏȭȯȱøǿǫǭōṓṑỏȍȏơớờỡởợọộœ]', 'o'}, {'[ÓÒŎỐỒỖỔǑÔÖȪŐÕṌṎȬȮȰØǾǪǬŌṒṐỎȌȎƠỚỜỠỞỢỌỘŒ]', 'O'}, {'[ṕṗ]', 'p'}, {'[ṔṖ]', 'P'}, {'[ŕřṙŗȑȓṛṝṟ]', 'r'}, {'[ŔŘṘŖȐȒṚṜṞ]', 'R'}, {'[śṥŝṧṡşṣṩșšß]', 's'}, {'[ŚṤŜṦṠŞṢṨȘŠ]', 'S'}, {'[ťṫẗţṭțṱṯ]', 't'}, {'[ŤṪŢṬȚṰṮ]', 'T'}, {'[úùŭûǔůüǘǜǚǖűũṹųūṻủȕȗưứừữửựụṳṷṵʉ]', 'u'}, {'[ÚÙŬÛǓŮÜǗǛǙǕŰŨṸŲŪṺỦȔȖƯỨỪỮỬỰỤṲṶṴɄ]', 'U'}, {'[ṽṿʋ]', 'v'}, {'[ṼṾƲ]', 'V'}, {'[ẃẁŵẘẅẇẉⱳ]', 'w'}, {'[ẂẀŴ̊ẄẆẈⱲ]', 'W'}, {'[ýỳŷẙÿỹẏȳỷỵɏƴ]', 'y'}, {'[ÝỲŶ̊ŸỸẎȲỶỴɎƳ]', 'Y'}, {'[źẑžżẓẕƶȥʐⱬ]', 'z'}, {'[ŹẐŽŻẒẔƵȤʐⱫ]', 'Z'}, } local new_args = str._getParameters(frame.args, {'source'}) local source = new_args['source'] or '' --local source = mw.ustring.toNFC(source) for _, el in ipairs(collation) do source = mw.ustring.gsub( source, el[1], el[2]) end return source end --[[ Funzione per estrarre da un titolo la stringa adatta all'ordinamento alfabetico. ]] function str.titolo_alfa(frame) -- Evito "I", "A", "Die"... che darebbero molte false corrispondenze in lingue diverse local articoli = {"Il ", "Lo ", "La ", "L'", "Gli ", "Le ", "Un ", "Uno ", "Una ", "Un'", "The ", "An ", "Les ", "El ", "Los ", "Las ", "Der ", "Das "} local source = frame.args[1] if not source or source == '' then source = mw.title.getCurrentTitle().text end if not source or source == '' then return '' end source = mw.ustring.gsub(source, ' %(.*%)$', '') source = str.collate( { args = { source } } ) source = mw.ustring.gsub(source, "^['%(%.¡¿ ]*", '') for _,article in ipairs(articoli) do source = mw.ustring.gsub(source, "^(" .. article .. ")(.*)$", "%2, %1") end source = mw.ustring.gsub(source, '^%l', mw.ustring.upper) source = mw.text.trim(source) return source end -- ================================================================= -- Classe per gestire i parametri -- ================================================================= local Param = {} Param.__index = Param function Param.new(par_name, alt_name) if par_name ~= "$index" and not mw.ustring.find(par_name, '#') then par_name = par_name .. '#' end; return setmetatable({ name = par_name, base_name = mw.ustring.gsub(par_name, ' ?#', '', 1), alt = alt_name }, Param) end function Param:get_other_value(args, index) if self.name == '$index' then return tostring(index), true else return args[mw.ustring.gsub(self.name, '#', tostring(index), 1)] or '', false end end function Param:get_first_value(args, index, base_index) function value_or_nil (s) if s and s ~= '' then return s end return nil end if self.name == '$index' then return tostring(index), true end if index == base_index then return value_or_nil(args[mw.ustring.gsub(self.name, '#', tostring(index), 1)]) or value_or_nil(args[self.base_name]) or value_or_nil(args[self.alt]) or '', false else return value_or_nil(args[mw.ustring.gsub(self.name, '#', tostring(index), 1)]) or value_or_nil(args[self.alt]) or '', false end end setmetatable(Param, { __call = function(_, ...) return Param.new(...) end }) -- ================================================================= -- fine dichiarazione classe per parametro -- ================================================================= -- ================================================================= -- Classe per gestire il messaggio -- ================================================================= local Message = {} Message.__index = Message function Message.new(msg) -- converto parentesi graffe che sono state precedute da "\" msg = mw.ustring.gsub(msg, '\\{', '{') msg = mw.ustring.gsub(msg, '\\}', '}') local frame = mw.getCurrentFrame():getParent() or mw.getCurrentFrame() return setmetatable({ msg = msg, values = {}, frame = frame, }, Message) end function Message:reset_values() self.values = {} end function Message:add_value(value) self.values[#self.values+1] = value end function Message:text() return self.frame:preprocess(mw.message.newRawMessage(self.msg, self.values):plain()) end setmetatable(Message, { __call = function(_, ...) return Message.new(...) end }) -- ================================================================= -- fine dichiarazione classe per messaggio -- ================================================================= --[[ Funzione per unire una o più liste di valori in una stringa. Uso: {{#invoke:String|arraytostring|par1=xxx|par2=xxx....|parn=xxxx|msg=msg|separator=|congiunzione=|pre=|post=|lista=}} Parametri: par1...parn: i nomi base dei parametri da inserire nel messsaggio, devono contenere il carattere '#' che precisa la posizione in cui inserire l'indice. Se viene valorizzato a '$index' avrà automaticamente il valore del contatore. msg: il messaggio (cioè la riga unitaria) in cui eventuali caratteri '{', '}' dovranno essere preceduti da '\', mentre una "|" dovrà essere inserita con il template {{!}}. I valori da sostituire sono da inserire come $n ($1 sarà sostituito dal valore di par1, $2 dal valore di par2, ecc...) separatore: La stringa da inserire tra ogni valore congiunzione: La stringa da inserire invece di separatore tra l'ultimo e il penultimo valore. Se non precisato viene usato il valore di separatore pre: eventuale stringa che precede l'unione delle stringhe post: eventuale stringa che segue l'unione delle stringhe indentazione: una stringa da ripetere cumulativamente per ogni messaggio (tipicamente '&nbsp') lista: se valorizzata a: 'puntata' imposta i parametri per una lista puntata 'ordinata' imposta i parametri per una lista ordinata 'infobox' imposta l'unione come una lista, eccetto che nel caso ci sia solo un elemento Se lista è valorizzata separatore/congiunzione/pre/post sono ignorati, salvo il caso di 'infobox' e la lista contenga solo un elemento. nmin = indice iniziale da cui partire a scandire i parametri (di default pari a 1) nmax = indice massimo a cui arrivare con i parametri (se non precisato illimitato) nobbligatori = l'indice minimo che deve essere valutato anche in presenza di buchi nella sequenza (comunque l'indice massimo che viene valutato è nmax) baseIndex = valore dell'indice che può essere sostituito da stringa nulla (default = 1) Esempi di chiamata: {{#invoke:string:arraytostring|par1=var#|separatore=,|congiunzione=#32;e#32;}} {{#invoke:string:arraytostring|par1=disegnatore #|par2=disegnatore # nota|msg = $1 <small>$2</small>|lista=infobox }} {{#invoke:string:arraytostring|par1=editore #|par2=etichetta #|par3=editore # nota| msg=$1 \{\{#if:$2{{!}}$2 <small>$3</small>\}\}|lista=infobox }} ]] function str.arraytostring(frame) local base_args = frame.args local params = {} if not base_args then return str._error('Lista parametri vuota') end -- carico la lista dei parametri local index = 1 while true do local par_name = base_args['par' .. index] or (index == 1 and base_args['par']) or '' if par_name == '' then break end --carico eventuale nome alternativo per il primo parametro local alt_name = base_args['altpar' .. index] or (index == 1 and base_args['altpar']) or nil params[index] = Param(par_name, alt_name) index = index + 1 end --carico il messaggio local msg = base_args.msg or '$1' --if msg == '' then return str._error('Manca il messaggio da riprodurre.') end local message = Message(msg) elements = {} -- carico gli altri parametri di formattazione local Nmax = tonumber(base_args.Nmax) or tonumber(base_args.nmax) or 0 local base_index = tonumber(base_args.baseindex) or tonumber(base_args.baseIndex) or 1 local index = tonumber(base_args.Nmin) or tonumber(base_args.nmin) or base_index local Nobbligatori = tonumber(base_args.Nobbligatori) or tonumber(base_args.nobbligatori) or base_index-1 local indentazione = base_args.indentazione or nil local args = frame:getParent().args -- estraggo il primo valore local found = false for i, param in ipairs(params) do local v, is_index = param:get_first_value(args, index, base_index) if (not(is_index) or base_index<=Nobbligatori) and v ~= '' then found = true end message:add_value(mw.text.trim(v)) end if found then elements[#elements+1] = message:text() index = index + 1 end -- elaboro i valori successivi while true do if Nmax > 0 and index > Nmax then break end message:reset_values() found = false for i, param in ipairs(params) do local v, is_index = param:get_other_value(args, index) if (not(is_index) or index<=Nobbligatori) and v ~= '' then found = true end message:add_value(mw.text.trim(v)) end if found then elements[#elements+1] = message:text() elseif index >= Nobbligatori then break end index = index + 1 end if #elements == 0 then return '' end -- carico separatori, congiunzione, pre e postazione local pre, post, separatore, congiunzione, indent = '', '', '', '', '' local lista = base_args.lista or '' if lista == 'puntata' or (lista =='infobox' and #elements >1) then pre = '<UL><LI>' post = '</LI>\n</UL>' separatore = '</LI>\n<LI>' congiunzione = separatore elseif lista == 'ordinata' then pre = '<OL><LI>' post = '</LI>\n</OL>' separatore = '</LI>\n<LI>' congiunzione = separatore else pre = base_args.pre or '' post = base_args.post or '' separatore = base_args.separatore or '' congiunzione = base_args.congiunzione or separatore end if indentazione then local current_indentazione = indentazione for i, msg in ipairs(elements) do elements[i] = current_indentazione .. elements[i] current_indentazione = current_indentazione .. indentazione end end return pre .. mw.text.listToText(elements, separatore, congiunzione) .. post end --[[ Funzione per unire una lista di valori in una stringa. Uso: {{#invoke:String|listtostring|par_number=xxx|msg=msg|separator=|congiunzione=|pre=|post=|lista=}} Parametri: par_number: il numero di parametri che compongono il messaggio msg: il messaggio (cioè la riga unitaria) in cui eventuali caratteri '{', '}' dovranno essere preceduti da '\', mentre una "|" dovrà essere inserita con il template {{!}}. I valori da sostituire sono da inserire come $n (nel primo messaggio $1 sarà sostituito dal parametro posizionale di posizione Nmin, $2 da Nmin+2, ecc...., nel secondo messaggio $1 sarà sostituito dal parametro posizionale Nmin+par_number, $2 da Nmin+par_number+2, ec....) valore di par1, $2 dal valore di par2, ecc...) separatore: La stringa da inserire tra ogni valore congiunzione: La stringa da inserire invece di separatore tra l'ultimo e il penultimo valore. Se non precisato viene usato il valore di separatore pre: eventuale stringa che precede l'unione delle stringhe post: eventuale stringa che segue l'unione delle stringhe lista: se valorizzata a: 'puntata' imposta i parametri per una lista puntata 'ordinata' imposta i aprametri per una lista ordinata 'infobox' imposta l'unione come una lista, eccetto che nel caso ci sia solo un elemento Se lista è valorizzata separatore/congiunzione/pre/post sono ignorati, salvo il caso di 'infobox' e la lista contenga solo un elemento. nmax = indice massimo a cui arrivare con i parametri (se non precisato illimitato) nobbligatori = l'indice minimo che deve essere valutato anche in presenza di buchi nella sequenza (comunque l'indice massimo che viene valutato è nmax) baseIndex = valore del primo parametro posizionale da cui cominciare a leggere (default = 1) ]] function str.listtostring(frame) local base_args = frame.args local params = {} if not base_args then return str._error('Lista parametri vuota') end -- carico la lista dei parametri local base_index = tonumber(base_args.base_index) or 1 local par_number = tonumber(base_args.par_number) or 1 local Nmax = tonumber(base_args.nmax) or 0 local Nobbligatori = tonumber(base_args.nobbligatori) or base_index-1 --carico il messaggio local message = Message(base_args.msg or '$1') elements = {} -- carico gli altri parametri di formattazione local index = base_index local args = frame:getParent().args -- elaboro i valori successivi local found = true while true do if Nmax > 0 and index > Nmax then break end message:reset_values() found = false for i = index, index+par_number-1 do message:add_value(args[i] or '') if args[i] then found = true end end if found then elements[#elements+1] = message:text() elseif index > Nobbligatori then break end index = index + par_number end if #elements == 0 then return '' end -- carico separatori, congiunzione, pre e postazione local pre, post, separatore, congiunzione = '', '', '', '' local lista = base_args.lista or '' if lista == 'puntata' or (lista =='infobox' and #elements >1) then pre = '<UL><LI>' post = '</LI>\n</UL>' separatore = '</LI>\n<LI>' congiunzione = separatore elseif lista == 'ordinata' then pre = '<OL><LI>' post = '</LI>\n</OL>' separatore = '</LI>\n<LI>' congiunzione = separatore else pre = base_args.pre or '' post = base_args.post or '' separatore = base_args.separatore or '' congiunzione = base_args.congiunzione or separatore end return pre .. mw.text.listToText(elements, separatore, congiunzione) .. post end --[[ Funzione di aiuto che popola la lista di argomenti, dato che l'utente può voler utilizzare sia parametri nominati che non nominati. Questo è rilevante perchè gli spazi iniziali iniziali e finali dei parametri nominati sono eliminati, mentre quelli dei parametri non nominati non lo sono. Secondo l'applicazione si potrebbe a volte conservare o rimuovere gli spazi. ]] function str._getParameters( frame_args, arg_list ) local new_args = {}; local index = 1; local value; for i,arg in ipairs( arg_list ) do value = frame_args[arg] if value == nil then value = frame_args[index]; index = index + 1; end new_args[arg] = value; end return new_args; end --[[ Funzione di appoggio per gestire i messaggi di errore. ]] function str._error( error_str ) local frame = mw.getCurrentFrame(); local error_category = frame.args.error_category or 'Errori riportati dal modulo String'; local ignore_errors = frame.args.ignore_errors or false; local no_category = frame.args.no_category or false; if str._getBoolean(ignore_errors) then return ''; end local error_str = '<strong class="error">Errore nel modulo String: ' .. error_str .. '</strong>'; if error_category ~= '' and not str._getBoolean( no_category ) then error_str = '[[Categoria:' .. error_category .. ']]' .. error_str; end return error_str; end --[[ Funzione di appoggio per interpretare le stringhe come valori booleane ]] function str._getBoolean( boolean_str ) local boolean_value; if type( boolean_str ) == 'string' then boolean_str = boolean_str:lower(); if boolean_str == 'false' or boolean_str == 'no' or boolean_str == '0' or booleean_str == 'falso' or boolean_str == '' then boolean_value = false; else boolean_value = true; end elseif type( boolean_str ) == 'boolean' then boolean_value = boolean_str; else error('Nessun valore booleano trovato' ); end return boolean_value end --[[ Funzione di appoggio per aggiungere un carattere di escape a tutti i caratteri speciali, così da trattare una stringa come testo normale e non come pattern di Lua. ]] function str._escapePattern( pattern_str ) return mw.ustring.gsub( pattern_str, "([%(%)%.%%%+%-%*%?%[%^%$%]])", "%%%1" ); end return str -- Version history: -- 29/3/2013 traduzione iniziale da en:module:String versione 540627185 del 26 febbraio 2013 -- 07/05/2013 aggiunta funzione rep da en:module:String versione 552254999 del 26 aprile 2013 -- 19/08/2013 aggiunta funzione arraytostring </textarea><div id="mw-scribunto-console"></div><div class="templatesUsed"><div class="mw-templatesUsedExplanation"><p>Template utilizzati in questa pagina: </p></div><ul> <li><a href="/wiki/Template:," title="Template:,">Template:,</a> (<a href="/w/index.php?title=Template:,&action=edit" title="Template:,">visualizza wikitesto</a>) (protetto)</li><li><a href="/wiki/Template:Big" title="Template:Big">Template:Big</a> (<a href="/w/index.php?title=Template:Big&action=edit" title="Template:Big">visualizza wikitesto</a>) (protetto)</li><li><a href="/wiki/Template:Man/styles.css" title="Template:Man/styles.css">Template:Man/styles.css</a> (<a href="/w/index.php?title=Template:Man/styles.css&action=edit" title="Template:Man/styles.css">visualizza wikitesto</a>) (protetto)</li><li><a href="/wiki/Template:Man_modulo" title="Template:Man modulo">Template:Man modulo</a> (<a href="/w/index.php?title=Template:Man_modulo&action=edit" title="Template:Man modulo">visualizza wikitesto</a>) (semiprotetto)</li><li><a href="/wiki/Template:Protetta" title="Template:Protetta">Template:Protetta</a> (<a href="/w/index.php?title=Template:Protetta&action=edit" title="Template:Protetta">visualizza wikitesto</a>) (protetto)</li><li><a href="/wiki/Template:Tl" title="Template:Tl">Template:Tl</a> (<a href="/w/index.php?title=Template:Tl&action=edit" title="Template:Tl">visualizza wikitesto</a>) (protetto)</li><li><a href="/wiki/Template:%C2%B7" class="mw-redirect" title="Template:·">Template:·</a> (<a href="/w/index.php?title=Template:%C2%B7&action=edit" class="mw-redirect" title="Template:·">visualizza wikitesto</a>) (protetto)</li><li><a href="/wiki/Modulo:Arguments" title="Modulo:Arguments">Modulo:Arguments</a> (<a href="/w/index.php?title=Modulo:Arguments&action=edit" title="Modulo:Arguments">visualizza wikitesto</a>) (protetto)</li><li><a href="/wiki/Modulo:Protezione" title="Modulo:Protezione">Modulo:Protezione</a> (<a href="/w/index.php?title=Modulo:Protezione&action=edit" title="Modulo:Protezione">visualizza wikitesto</a>) (protetto)</li><li><a href="/wiki/Modulo:Protezione/Configurazione" title="Modulo:Protezione/Configurazione">Modulo:Protezione/Configurazione</a> (<a href="/w/index.php?title=Modulo:Protezione/Configurazione&action=edit" title="Modulo:Protezione/Configurazione">visualizza wikitesto</a>) (protetto)</li><li><a href="/wiki/Modulo:String" title="Modulo:String">Modulo:String</a> (<a href="/w/index.php?title=Modulo:String&action=edit" title="Modulo:String">visualizza wikitesto</a>) (protetto)</li><li><a href="/wiki/Modulo:String/man" title="Modulo:String/man">Modulo:String/man</a> (<a href="/w/index.php?title=Modulo:String/man&action=edit" title="Modulo:String/man">modifica</a>) </li></ul></div><p id="mw-returnto">Torna a <a href="/wiki/Modulo:String" title="Modulo:String">Modulo:String</a>.</p> <!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Estratto da "<a dir="ltr" href="https://it.wikipedia.org/wiki/Modulo:String">https://it.wikipedia.org/wiki/Modulo:String</a>"</div></div> <div id="catlinks" class="catlinks catlinks-allhidden" data-mw="interface"></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy/it">Informativa sulla privacy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:Sala_stampa/Wikipedia">Informazioni su Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:Avvertenze_generali">Avvertenze</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Codice di condotta</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Sviluppatori</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/it.wikipedia.org">Statistiche</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Dichiarazione sui cookie</a></li> <li id="footer-places-mobileview"><a href="//it.m.wikipedia.org/w/index.php?title=Modulo:String&action=edit&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Versione mobile</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-6b8d669998-gq8hm","wgBackendResponseTime":200,"wgPageParseReport":{"limitreport":{"cputime":"0.006","walltime":"0.011","ppvisitednodes":{"value":22,"limit":1000000},"postexpandincludesize":{"value":859,"limit":2097152},"templateargumentsize":{"value":0,"limit":2097152},"expansiondepth":{"value":2,"limit":100},"expensivefunctioncount":{"value":0,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":0,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 0.000 1 -total"]},"cachereport":{"origin":"mw-web.codfw.main-6b8d669998-gq8hm","timestamp":"20241128074631","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>