{"id":115,"date":"2016-01-06T10:08:29","date_gmt":"2016-01-06T10:08:29","guid":{"rendered":"http:\/\/10.0.0.10:8888\/wp\/?page_id=115"},"modified":"2017-12-02T08:41:51","modified_gmt":"2017-12-02T08:41:51","slug":"stringtools-descripcion","status":"publish","type":"page","link":"https:\/\/www.froses.com\/index.php\/es\/stringtools-descripcion\/","title":{"rendered":"StringTools &#8211; Descripci\u00f3n"},"content":{"rendered":"<p>Las <strong><em>String Tools<\/em><\/strong> son un conjunto de funciones de tratamiento de tiras de caracteres que reprodcen en Java una buena parte de las existentes en <a href=\"https:\/\/es.wikipedia.org\/wiki\/REXX\" target=\"_blank\" rel=\"noopener\">Rexx<\/a> y <a href=\"http:\/\/www.netrexx.org\/\" target=\"_blank\" rel=\"noopener\">NetRexx<\/a>.<\/p>\n<p>Son funciones que yo no he visto en ning\u00fan otro lenguaje y que considero que son de gran utilidad. Cuando me acerqu\u00e9 a Java, entonces un llenguaje nuevo, cre\u00eda que quiz\u00e1s incorporar\u00edan alguna cosa nueva en lo que al procesado de tiras de caracteres se refiere, pero vi que la cosa segu\u00eda m\u00e1s o menos como en C. Conforme iba trabajando, m\u00e1s echaba de menos algunas de las funciones de Rexx, as\u00ed que poco a poco las fui programando en Java. El resultado de aquella compilaci\u00f3n de funciones es lo que ahora pongo a su\u00a0disposici\u00f3n.<\/p>\n<p>Pueden\u00a0descargar las 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\u00f3n breve de las funciones de StringTools<\/caption>\n<tbody>\n<tr>\n<th scope=\"col\" width=\"100\">Funci\u00f3n<\/th>\n<th scope=\"col\" width=\"664\">Descripci\u00f3n<\/th>\n<\/tr>\n<tr>\n<td><strong>center<\/strong><\/td>\n<td>Centra una tira en una longitud determinada y permite especificar un caracter de relleno (p.e.<code>StringTools.center(\" ab \", 10, \"-\")<\/code> devolver\u00e1 <code>\"--- ab ---\"<\/code>).<\/td>\n<\/tr>\n<tr>\n<td><strong>changeStr<\/strong><\/td>\n<td>Reemplaza todas las apariciones de una tira en otra por una tercera tira (p.e.<code>StringTools.changeStr(\"1\",\"101100\",\"\")<\/code> devolver\u00e1 <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 dos tiras usando, si es necesario, un car\u00e1cter de relleno para hacer conincidir las longitudes de las tiras (p.e. <code>compare('abc','abc')<\/code> devuelve <code>-1<\/code>, <code>compare('abc','ak')<\/code> devuelve <code>1<\/code> i<code>compare('ab-- ','ab','-')<\/code> devuelve <code>4<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>copies<\/strong><\/td>\n<td>Copia una tira <em>n<\/em> veces (p.e. <code>copies('a',3)<\/code> devuelve <code>\"aaa\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>countStr<\/strong><\/td>\n<td>Cuenta las veces que una tira aparece en otra (p.e. <code>countStr(\"1\", \"101101\")<\/code> devuelve <code>4<\/code> y <code>countStr(\"KK\", \"J0KKK0\")<\/code> devuelve <code>1<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>delStr<\/strong><\/td>\n<td>Borra una subtira de caracteres de otra (p.e. <code>delStr(\"abcd\",2)<\/code> devuelve <code>\"ab\"<\/code> i<code>delStr(\"abcde\",2,2)<\/code> devuelve <code>\"abe\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>delWord<\/strong><\/td>\n<td>Funciona como <code>delStr<\/code> pero con palabras en vez de caracteres (p.e. <code>delWord(\"Now is the time\",2,2)<\/code> devuelve <code>\"Now time\"<\/code> y <code>delWord(\"Now is the time \",3)<\/code> devuelve<code>\"Now is \"<\/code> )<\/td>\n<\/tr>\n<tr>\n<td><strong>insert<\/strong><\/td>\n<td>Inserta una tira en otra en una posici\u00f3n concreta rellenando o recortando lo que sea necesario (p.e.<code>insert(\" \",\"abcdef\",3)<\/code> devuelve <code>\"abc def\"<\/code>, <code>insert(\"123\",\"abc\",5,6)<\/code> devuelve<code>\"abc\u00a0\u00a0123\u00a0\u00a0\u00a0\"<\/code> y <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 realidad invoca el m\u00e9todo <code>lastIndex<\/code> de la clase <code>String<\/code>. La incluyo, s\u00f3lo, por compatibilidad con Rexx.<\/td>\n<\/tr>\n<tr>\n<td><strong>left<\/strong><\/td>\n<td>Devuelve una tira alineada a la izquierda y, si es necesario, rellen\u00e1ndola con un car\u00e1cter concreto (p.e.<code>left(\"1234\", 2)<\/code> devuelve <code>\"12\"<\/code>, <code>left(\"1234\", 6)<\/code> devuelve <code>\"1234\u00a0\u00a0\"<\/code> y<code>left(\"1234\", 6, '+')<\/code> devuelve <code>\"1234++\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>overlay<\/strong><\/td>\n<td>Solapa una tira en otra a partir de una posici\u00f3n concreta (p.e. <code>overlay(\" \",\"abcdef\",2)<\/code> devuelve <code>\"ab\u00a0def\"<\/code> y <code>overlay(\"123\",\"abc\",4,6,'+')<\/code> devuelve <code>\"abc+123+++\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>reverse<\/strong><\/td>\n<td>Devuelve una tira al rev\u00e9s (p.e. <code>reverse(\"ABC\")<\/code> devuelve <code>\"CBA\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>right<\/strong><\/td>\n<td>Devuelve una tira alineada a la derecha y, si es necesario, rellen\u00e1ndola con un caracter concreto (p.e.<code>right(\"abc\u00a0def\",5)<\/code> devuelve <code>\"c\u00a0def\"<\/code> y <code>right(\"12\",5,'0')<\/code>, <code>\"00012\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>space<\/strong><\/td>\n<td>Espacia las palabras de una tira de caracteres a <em>n<\/em> caracteres y permite especificar el car\u00e1cter de espaciado (p.e. <code>space(\"a\u00a0\u00a0\u00a0b\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0c\")<\/code> devuelve <code>\"a\u00a0b\u00a0c\"<\/code>,<code>space(\"a\u00a0\u00a0\u00a0b\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0c\", 2)<\/code> devuelve <code>\"a\u00a0\u00a0b\u00a0\u00a0c\"<\/code> y <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 determinado car\u00e1cter del inicio o el final (o del inicio y el final) de una tira (p.e.<code>strip(\"\u00a0\u00a0bc\u00a0\u00a0\")<\/code> devuelve <code>\"bc\"<\/code>, <code>strip(\"++bc++\", \"T\", '+')<\/code> devuelve <code>\"++bc\"<\/code> y<code>strip(\"++bc++\", \"L\", '+')<\/code>, <code>\"bc++\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>subStr<\/strong><\/td>\n<td>Devuelve una subtira. Es similar al m\u00e9todo<code>substring<\/code> de la clase <code>String<\/code>, pere \u00e9ste permite rellenar la subtira resultante en el caso que sea m\u00e1s grande que la inicial (p.e. <code>subStr(\"abc\", 1)<\/code>devuelve <code>\"bc\"<\/code>, <code>subStr(\"abc\", 1, 4)<\/code> devuelve <code>\"abc\u00a0\"<\/code> y <code>subStr(\"abc\", 1, 6, '.')<\/code>, <code>\"bc....\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>subWord<\/strong><\/td>\n<td>Funciona como <code>subStr<\/code>, pero a nivell de palabras (p.e. <code>subWord(\"Now is the time\",2,2)<\/code> devuelve <code>\"is the\"<\/code> y <code>subWord(\"Now is the time\",3)<\/code> devuelve <code>\"the time\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>translate<\/strong><\/td>\n<td>Traduce los caracteres de una tira en funci\u00f3n de una tabla de entrada y otra de salida especificadas como sendas tiras. Si no especificamos las tablas, la funci\u00f3n simplemente pasa a may\u00fasculas la tira (p.e. translate(&#8220;abcdef&#8221;) devuelve &#8220;ABCDEF&#8221;, translate(&#8220;010101&#8221;, &#8220;+&#8221;, &#8220;1&#8221;) devuelve &#8220;0+0+0+&#8221;, translate(&#8220;4123&#8243;,&#8221;abcd&#8221;,&#8221;1234&#8243;) devuelve &#8220;dabc&#8221;<\/td>\n<\/tr>\n<tr>\n<td><strong>word<\/strong><\/td>\n<td>Devuelve la en\u00e9sima palabra de una tira (p.e. <code>word(\"Now is the time\",3)<\/code> devuelve <code>\"the\"<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>wordIndex<\/strong><\/td>\n<td>Devuelve la posici\u00f3n del primer car\u00e1cter de la en\u00e9sima palabra (p.e. <code>wordIndex(\"Now is the time\",3)<\/code> devuelve <code>7<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>wordLength<\/strong><\/td>\n<td>Devuelve la longitud de la en\u00e9sima palabra (p.e. <code>wordLength(\"Now is the time\", 4)<\/code> devuelve <code>4<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>words<\/strong><\/td>\n<td>Cuenta el n\u00famero de palabras en una tira, entendiendo como parlabra una subtira delimitada por blancos (p.e <code>words(\"Now is the time\")<\/code> devuelve <code>4<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong>xrange<\/strong><\/td>\n<td>Devuelve una tira con los caracteres con una codificaci\u00f3n consecutiva entre el primer par\u00e1metro y el segundo (p.e. <code>xrange('a', 'f')<\/code> devuelve <code>\"abcdef\"<\/code>)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Las String Tools son un conjunto de funciones de tratamiento de tiras de caracteres que reprodcen en Java una buena parte de las existentes en Rexx y NetRexx. Son funciones que yo no he visto en ning\u00fan otro lenguaje y que considero que son de gran utilidad. Cuando me acerqu\u00e9 a Java, entonces un llenguaje [&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-115","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/pages\/115","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=115"}],"version-history":[{"count":16,"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/pages\/115\/revisions"}],"predecessor-version":[{"id":371,"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/pages\/115\/revisions\/371"}],"wp:attachment":[{"href":"https:\/\/www.froses.com\/index.php\/wp-json\/wp\/v2\/media?parent=115"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}