{"id":113,"date":"2016-01-06T10:04:10","date_gmt":"2016-01-06T10:04:10","guid":{"rendered":"http:\/\/10.0.0.10:8888\/wp\/?page_id=113"},"modified":"2017-12-02T08:42:31","modified_gmt":"2017-12-02T08:42:31","slug":"stringtools-descripcio","status":"publish","type":"page","link":"https:\/\/www.froses.com\/index.php\/ca\/stringtools-descripcio\/","title":{"rendered":"StringTools &#8211; Descripci\u00f3"},"content":{"rendered":"<p>Les <strong><em>String Tools<\/em><\/strong> s\u00f3n un conjunt de funcions de tractament de tires de car\u00e0cters que reprodueixen en Java una bona part de les existents en <a href=\"https:\/\/ca.wikipedia.org\/wiki\/Rexx\" target=\"_blank\" rel=\"noopener\">Rexx<\/a> i <a href=\"http:\/\/www.netrexx.org\/\" target=\"_blank\" rel=\"noopener\">NetRexx<\/a>.<\/p>\n<p>S\u00f3n funcions que jo no he vist en cap altre llenguatge i que considero que s\u00f3n de gran utilitat. Quan em vaig apropar a Java, aleshores un llenguatge nou, em pensava que potser incorporarien alguna cosa nova pel que fa a tractament de tires de car\u00e0cters, per\u00f2 vaig veure que la cosa seguia m\u00e9s o menys com en C. Conforme anava treballant, trobava m\u00e9s a faltar algunes de les funcions de Rexx, aix\u00ed que poc a poc les vaig anar programant en Java. El resultat d&#8217;aquella compilaci\u00f3 de funcions \u00e9s el que ara poso a la seva disposici\u00f3.<\/p>\n<p>Poden descarregar les StringTools <a href=\"https:\/\/www.dropbox.com\/s\/mzhzzuwrrd6m25k\/FStringTools.zip?dl=0\">aqu\u00ed<\/a>.<\/p>\n<table border=\"1\" summary=\"Descripci\u00f3 breu de les funcions que es troben a StringTools sense detalls de sintaxi.\" width=\"748\">\n<caption align=\"bottom\">Descripci\u00f3 breu de les funcions de StringTools<\/caption>\n<tbody>\n<tr>\n<th scope=\"col\" width=\"100\">Funci\u00f3<\/th>\n<th scope=\"col\" width=\"664\">Descripci\u00f3<\/th>\n<\/tr>\n<tr>\n<td><strong>center<\/strong><\/td>\n<td>Centra una tira en una longitud determinada i permet especificar un car\u00e0cter de farciment (p.e.<code>StringTools.center(\" ab \", 10, \"-\")<\/code> tornar\u00e0 <code>\"--- ab ---\"<\/code>).<\/td>\n<\/tr>\n<tr>\n<td><strong>changeStr<\/strong><\/td>\n<td>Reempla\u00e7a totes les ocurr\u00e8ncies d&#8217;una tira en una altra per una tercera tira (p.e.<code>StringTools.changeStr(\"1\",\"101100\",\"\")<\/code> tornar\u00e0 <code>\"000\"<\/code> i<code>StringTools.changeStr(\"1\",\"101100\",\"X\")<\/code>, <code>\"X0XX00\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>compare<\/strong><\/td>\n<td>Compara dues tires emprant, si cal, un car\u00e0cter de farciment per fer conincidir les longituds de les tires (p.e. <code>compare('abc','abc')<\/code> torna <code>-1<\/code>, <code>compare('abc','ak')<\/code> torna <code>1<\/code> i <code>compare('ab-- ','ab','-')<\/code> torna <code>4<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>copies<\/strong><\/td>\n<td>Copia una tira <em>n<\/em> vegades (p.e. <code>copies('a',3)<\/code> torna <code>\"aaa\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>countStr<\/strong><\/td>\n<td>Compta les vegades que una tira apareix en una altra (p.e. <code>countStr(\"1\", \"101101\")<\/code> torna <code>4<\/code> i <code>countStr(\"KK\", \"J0KKK0\")<\/code> torna <code>1<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>delStr<\/strong><\/td>\n<td>Esborra una subtira de car\u00e0cters d&#8217;una altra (p.e. <code>delStr(\"abcd\",2)<\/code> torna <code>\"ab\"<\/code> i<code>delStr(\"abcde\",2,2)<\/code> torna <code>\"abe\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>delWord<\/strong><\/td>\n<td>Funciona com delStr per\u00f2 amb paraules en comptes de car\u00e0cters (p.e. <code>delWord(\"Now is the time\",2,2)<\/code> torna <code>\"Now time\"<\/code> i <code>delWord(\"Now is the time \",3)<\/code> torna <code>\"Now is \"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>insert<\/strong><\/td>\n<td>Insereix una tira en una altra a una posici\u00f3 concreta farcint o retallant el que calgui (p.e. <code>insert(\" \",\"abcdef\",3)<\/code> torna <code>\"abc def\"<\/code>, <code>insert(\"123\",\"abc\",5,6)<\/code> torna <code>\"abc\u00a0\u00a0123\u00a0\u00a0\u00a0\"<\/code>i <code>insert(\"123\",\"abc\",5,6,'+')<\/code>, <code>\"abc++123+++\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>lastPos<\/strong><\/td>\n<td>En realitat crida el m\u00e8tode <code>lastIndex<\/code> de la classe <code>String<\/code>. L&#8217;incloc, nom\u00e9s, per compatibilitat amb Rexx.<\/td>\n<\/tr>\n<tr>\n<td><strong>left<\/strong><\/td>\n<td>Torna una tira alineada a l&#8217;esquerra i, si cal, farcint-la amb un car\u00e0cter concret (p.e. <code>left(\"1234\", 2)<\/code> torna <code>\"12\"<\/code>, <code>left(\"1234\", 6)<\/code> torna <code>\"1234\u00a0\u00a0\"<\/code> i <code>left(\"1234\", 6, '+')<\/code> torna<code>\"1234++\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>overlay<\/strong><\/td>\n<td>Sobreposa una tira en una altra a partir d&#8217;una posici\u00f3 concreta (p.e. <code>overlay(\" \",\"abcdef\",2)<\/code> torna <code>\"ab\u00a0def\"<\/code> i <code>overlay(\"123\",\"abc\",4,6,'+')<\/code> torna <code>\"abc+123+++\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>reverse<\/strong><\/td>\n<td>Torna una tira a l&#8217;inrev\u00e9s (p.e. <code>reverse(\"ABC\")<\/code> torna <code>\"CBA\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>right<\/strong><\/td>\n<td>Torna una tira alineada a la dreta i, si cal, farcint-la amb un car\u00e0cter concret (p.e.<code>right(\"abc\u00a0def\",5)<\/code> torna <code>\"c\u00a0def\"<\/code> i <code>right(\"12\",5,'0')<\/code>, <code>\"00012\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>space<\/strong><\/td>\n<td>Espaia les paraules d&#8217;una tira de car\u00e0cters a <em>n<\/em> car\u00e0cters i permet especificar el car\u00e0cter d&#8217;espaiat (p.e.<code>space(\"a\u00a0\u00a0\u00a0b\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0c\")<\/code> torna <code>\"a\u00a0b\u00a0c\"<\/code>, <code>space(\"a\u00a0\u00a0\u00a0b\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0c\", 2)<\/code> torna <code>\"a\u00a0\u00a0b\u00a0\u00a0c\"<\/code> i <code>space(\"a\u00a0\u00a0\u00a0b\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0c\", 2, '+')<\/code>, <code>\"a++b++c\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>strip<\/strong><\/td>\n<td>Elimina un determinat car\u00e0cter de l&#8217;inici o el final (o de l&#8217;inici i el final) d&#8217;una tira (p.e.<code>strip(\"\u00a0\u00a0bc\u00a0\u00a0\")<\/code> torna <code>\"bc\"<\/code>, <code>strip(\"++bc++\", \"T\", '+')<\/code> torna <code>\"++bc\"<\/code> i<code>strip(\"++bc++\", \"L\", '+')<\/code>, <code>\"bc++\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>subStr<\/strong><\/td>\n<td>Torna una subtira. \u00c9s similar al m\u00e8tode <code>substring<\/code> de la classe <code>String<\/code>, per\u00f2 aquest permet farcir la subtira resultant en el cas que sigui m\u00e9s gran que la inicial (p.e. <code>subStr(\"abc\", 1)<\/code> torna <code>\"bc\"<\/code>,<code>subStr(\"abc\", 1, 4)<\/code> torna <code>\"abc\u00a0\"<\/code> i <code>subStr(\"abc\", 1, 6, '.')<\/code>, <code>\"bc....\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>subWord<\/strong><\/td>\n<td>Funciona com subStr, per\u00f2 a nivell de paraules (p.e. <code>subWord(\"Now is the time\",2,2)<\/code> torna <code>\"is the\"<\/code> i <code>subWord(\"Now is the time\",3)<\/code> torna <code>\"the time\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>translate<\/strong><\/td>\n<td>Tradueix els car\u00e0cters d&#8217;una tira en funci\u00f3 d&#8217;una taula d&#8217;entrada i una altra de sortida especificades com sengles tires. Si no especifiquem les taules, la funci\u00f3 simplement passa a maj\u00fascules la tira (p.e. translate(&#8220;abcdef&#8221;) torna &#8220;ABCDEF&#8221;, translate(&#8220;010101&#8221;, &#8220;+&#8221;, &#8220;1&#8221;) torna &#8220;0+0+0+&#8221;, translate(&#8220;4123&#8243;,&#8221;abcd&#8221;,&#8221;1234&#8243;) torna &#8220;dabc&#8221;<\/td>\n<\/tr>\n<tr>\n<td><strong>word<\/strong><\/td>\n<td>Torna l&#8217;en\u00e8sima paraula d&#8217;una tira (p.e. <code>word(\"Now is the time\",3)<\/code> torna <code>\"the\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>wordIndex<\/strong><\/td>\n<td>Torna la posici\u00f3 del primer car\u00e0cter de l&#8217;en\u00e8sima paraula (p.e. <code>wordIndex(\"Now is the time\",3)<\/code> torna <code>7<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>wordLength<\/strong><\/td>\n<td>Torna la longitud de l&#8217;en\u00e8sima paraula (p.e. <code>wordLength(\"Now is the time\", 4)<\/code> torna <code>4<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>words<\/strong><\/td>\n<td>Compta el nombre de paraules en una tira, entenent com a paraula una subtira delimitada per blancs (p.e <code>words(\"Now is the time\")<\/code> torna <code>4<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>xrange<\/strong><\/td>\n<td>Torna una tira amb els car\u00e0cters amb una codificaci\u00f3 consecutiva entre el primer par\u00e0metre i el segon (p.e. <code>xrange('a', 'f')<\/code> torna <code>\"abcdef\"<\/code>)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>Les String Tools s\u00f3n un conjunt de funcions de tractament de tires de car\u00e0cters que reprodueixen en Java una bona part de les existents en Rexx i NetRexx. S\u00f3n funcions que jo no he vist en cap altre llenguatge i que considero que s\u00f3n de gran utilitat. Quan em vaig apropar a Java, aleshores un [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/full-width.php","meta":{"footnotes":""},"class_list":["post-113","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/pages\/113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/comments?post=113"}],"version-history":[{"count":13,"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/pages\/113\/revisions"}],"predecessor-version":[{"id":372,"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/pages\/113\/revisions\/372"}],"wp:attachment":[{"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/media?parent=113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}