{"id":13114,"date":"2018-08-23T11:17:01","date_gmt":"2018-08-23T09:17:01","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=13114"},"modified":"2018-08-23T12:34:14","modified_gmt":"2018-08-23T10:34:14","slug":"stringhe-in-kotlin","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/stringhe-in-kotlin\/","title":{"rendered":"Stringhe in Kotlin"},"content":{"rendered":"<p>Kotlin ha a disposizione l&#8217;apposita <strong>classe String per rappresentare sequenze alfanumeriche<\/strong>. Ognuno di questi oggetti pu\u00f2 contare su <strong>molti metodi<\/strong> per poter elaborare i caratteri che contiene.<\/p>\n<pre class=\"lang:java decode:true \">\/\/inizializzazione di una stringa\r\nval frase=\"Andremo domani al mare perch\u00e8 oggi mia sorella non si sente bene...\"\r\n\r\n\/\/ stampa del quarto carattere, posizione 3 partendo da 0\r\nprintln(frase[3]);\r\n\r\n\/\/ uso del metodo replace\r\nvar nuova=frase.replace(\"domani\", \"tra due giorni\")\r\nprintln(nuova)<\/pre>\n<p>L&#8217;output generato dall&#8217;esempio sar\u00e0 il seguente:<\/p>\n<pre class=\"lang:sh decode:true\">r\r\nAndremo tra due giorni al mare perch\u00e8 oggi mia sorella non si sente bene...<\/pre>\n<p>Prima verr\u00e0 stampato il carattere &#8216;r&#8217;, quarto della stringa, cui si \u00e8 fatto accesso con l&#8217;espressione frase[3]: questa \u00e8 una comodit\u00e0 molto interessante offerta da Kotlin, l&#8217;<strong>accesso diretto tramite indice ai caratteri della stringa<\/strong>. Subito dopo, abbiamo visto una dimostrazione del metodo <em>replace<\/em> in grado di sostituire una sottostringa con un&#8217;altra.<\/p>\n<p>Altri metodi esistenti sono quelli finalizzati al recupero di porzioni di stringa, utilizzati nel seguente esempio con il supporto di <em>trim<\/em> che elimina eventuali spazi iniziali e finali:<\/p>\n<pre class=\"lang:java decode:true\">\/\/ dall'inizio della stringa fino alla parola \"perch\u00e8\"\r\nprintln(frase.substringBefore(\"perch\u00e8\").trim())\r\n\r\n\/\/ dalla parola \"perch\u00e8\" alla fine della stringa\r\nprintln(frase.substringAfter(\"perch\u00e8\").trim())<\/pre>\n<p>Questo l&#8217;output che ne deriva:<\/p>\n<pre class=\"lang:sh decode:true \">Andremo domani al mare\r\noggi mia sorella non si sente bene...<\/pre>\n<p>La <strong>documentazione ufficiale<\/strong> offre tutte le informazioni necessarie sugli altri metodi disponibili per la <a href=\"https:\/\/kotlinlang.org\/api\/latest\/jvm\/stdlib\/kotlin\/-string\/\" target=\"_blank\" rel=\"noopener\">classe String<\/a>.<\/p>\n<p><strong>Le stringhe possono essere associate in array<\/strong> e, grazie a ci\u00f2 iterate in sequenza. Vediamo un esempio che mostra una lista di nomi che verr\u00e0 stampata accompagnando ogni elemento con il numero di caratteri che lo compongono:<\/p>\n<pre class=\"lang:java decode:true \">val nomi:Array&lt;String&gt; = arrayOf(\"Emanuele\", \"Ugo\", \"Luca\", \"Silvio\", \"Enrico\")\r\n\t\r\nfor (s in nomi)\r\n   println(\"${s} ha lunghezza ${s.length}\")<\/pre>\n<p>Ecco il risultato:<\/p>\n<pre class=\"lang:sh decode:true \">Emanuele ha lunghezza 8\r\nUgo ha lunghezza 3\r\nLuca ha lunghezza 4\r\nSilvio ha lunghezza 6\r\nEnrico ha lunghezza 6<\/pre>\n<p>Al prossimo tutorial&#8230; per continuare il nostro viaggio in Kotlin!<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kotlin ha a disposizione l&#8217;apposita classe String per rappresentare sequenze alfanumeriche. Ognuno di questi oggetti pu\u00f2 contare&#8230;<\/p>\n","protected":false},"author":561,"featured_media":13086,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1682,1],"tags":[1973,1941,1526,1909,1966,1967,1968,1948],"class_list":["post-13114","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","category-tutorial-pratici","tag-array","tag-ciclo-for","tag-java","tag-java-jre","tag-java-virtual-machine","tag-jvm","tag-kotlin","tag-stringhe"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/13114","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=13114"}],"version-history":[{"count":5,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/13114\/revisions"}],"predecessor-version":[{"id":13613,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/13114\/revisions\/13613"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/13086"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=13114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=13114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=13114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}