tag:blogger.com,1999:blog-6163851348186121310.post6528769231126439490..comments2024-02-26T15:11:52.989-03:00Comments on Code: String.formatVictor Hugo Saavedrahttp://www.blogger.com/profile/09420183879061622977noreply@blogger.comBlogger14125tag:blogger.com,1999:blog-6163851348186121310.post-41259901900067720832012-12-19T01:34:48.765-03:002012-12-19T01:34:48.765-03:00Este comentario ha sido eliminado por el autor.Sir Ashehttps://www.blogger.com/profile/05870070666001784827noreply@blogger.comtag:blogger.com,1999:blog-6163851348186121310.post-68263745741986325812012-12-11T00:58:45.624-03:002012-12-11T00:58:45.624-03:00Victor, muy buena info me sirvio para interiorizar...Victor, muy buena info me sirvio para interiorizarme un poco mas en el string.format<br /><br />Te dejo un link el cual explico con un poco mas de detalle<br />http://java-white-box.blogspot.com.ar/2012/12/java-player-como-unir-cadenas-string-en.html<br /><br />SaludosEl lado oscuro de javahttps://www.blogger.com/profile/05002079353107115137noreply@blogger.comtag:blogger.com,1999:blog-6163851348186121310.post-37738497147921341362010-06-10T13:57:42.408-04:002010-06-10T13:57:42.408-04:00Abel:
primero que todo muchas gracias por visitar...Abel:<br /><br />primero que todo muchas gracias por visitar y leer el blog, si bien no es el fin principal se agradece todas formas. <br /><br />con respecto a lo primero, si tienes toda la razon, tengo horrible redaccion y escritura:(.<br /><br />con respecto a usar string.format, me parece que no leiste todos los comentarios de esta entrada, hay una conversacion bien entretenida entre felipe y leo Soto.Victor Hugo Saavedrahttp://vhspiceros.blogspot.comnoreply@blogger.comtag:blogger.com,1999:blog-6163851348186121310.post-11826921192922882612010-06-08T11:32:17.560-04:002010-06-08T11:32:17.560-04:00Cambia la foto, Victor, por el éxito de tu blog. A...Cambia la foto, Victor, por el éxito de tu blog. A veces, hay cosas que hay que mantenerlas ocultas.Matías Bhttps://www.blogger.com/profile/08800674211271168064noreply@blogger.comtag:blogger.com,1999:blog-6163851348186121310.post-60105472489894074452010-06-08T11:31:35.334-04:002010-06-08T11:31:35.334-04:00Usar String.format para concatenar cadenas simples...Usar String.format para concatenar cadenas simples sin formateo es totalmente ridiculo. Es como usar un martillo neumático para levantar el piso de la cocina.Matías Bhttps://www.blogger.com/profile/08800674211271168064noreply@blogger.comtag:blogger.com,1999:blog-6163851348186121310.post-69217199084099827572010-06-08T11:30:56.134-04:002010-06-08T11:30:56.134-04:00Primero, el post esta escrito muy mal.
Segundo, l...Primero, el post esta escrito muy mal.<br /><br />Segundo, las concatenaciones en Java, por ejemplo:<br /><br />String cadena = "juan";<br />cadena += "es";<br />cadena += "genial";<br /><br />No usan internamente StringBuilder, justamente, esa concatenación le es carisima a la JVM, motivo por el cual, por motivos de performance, se usa StringBuilder(StringBuffer tiene la mismas funcionalidades pero esta sincronizada).<br /><br />La concatenación que puse de ejemplo genera un espacio en el String Pool para "Juan", "Juan es" y "Juan es genial" mientras que StringBuilder no. La razon es que String es un objeto inmutable.Matías Bhttps://www.blogger.com/profile/08800674211271168064noreply@blogger.comtag:blogger.com,1999:blog-6163851348186121310.post-26002170020998500132009-05-04T12:23:00.000-04:002009-05-04T12:23:00.000-04:00se me ocurre algo asi
"Victor Hugo Saavedra".Inde...se me ocurre algo asi<br /><br />"Victor Hugo Saavedra".IndexOf("Victor");<br />"Victor Hugo Saavedra".IndexOf("Hugo");<br /><br />var nombres = "victor Hugo Saavedra";<br />nombres.IndexOf("Hugo");<br /><br />el index of retorna un Int, en caso de que no lo encuentre devuelve un -1.<br /><br />despues tomas la cadena y le haces un substring, con el indice obtenido. <br /><br />Ojala te sirva.<br /><br />--<br />Atte.<br />Victor Hugo Saavedra<br />http://vhspiceros.blogspot.comVictor Hugo Saavedrahttps://www.blogger.com/profile/09420183879061622977noreply@blogger.comtag:blogger.com,1999:blog-6163851348186121310.post-70174467804736359882009-05-04T09:36:00.000-04:002009-05-04T09:36:00.000-04:00Disculap coo poria hacer un progra en C# q me conc...Disculap coo poria hacer un progra en C# q me concatene los nombres al introducir y en el momento de ejecutar q me diga el nombre y la posicion en la q se encuentra el nombre q yo deseo saberAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-6163851348186121310.post-83562394637928850752008-10-19T22:28:00.000-03:002008-10-19T22:28:00.000-03:00Leo,Tienes razon, puede ser impreciso hablar de un...Leo,<BR/>Tienes razon, puede ser impreciso hablar de una mejora de rendimiento cuantitativa en terminos de tiempos de ejecucion en funcion de las iteraciones, pero la idea es dejar claro que usar StringBuilder rinde mejor que la concatenacion con el operador de adicion. el n representa el numero de concatenaciones a realizar.<BR/><BR/>Esta afirmacion es correcta para .NET, desconocia el comportamiento del homologo en Java. Si Java por defecto convierte las instancias del operador de suma entre operandos string en una instancia de StringBuilder, es algo bastante inteligente de hacer. En contraste con .NET no es asi.<BR/><BR/>La mejora en rendimiento depende de la frecuencia con que se concatena, pues con el operador de adicion, se crea en memoria una referencia a un nuevo espacio para alojar una copia completa del string nuevo resultante de la concatenacion. Si consideras cadenas de texto muy extensas y numerosas concatenaciones esto seria bastante caro en terminos de procesamiento.<BR/><BR/>En su lugar, StringBuilder devuelve una referencia a si mismo en su ubicacion de memoria asignada en el minuto de la creacion del objeto, con un tamaño fijo por defecto. En pocas palabras es un buffer. Si el resultado de las concatenciones exceden en el tamaño original del buffer, entonces se crea una nueva instancia del objeto, con mas capacidad, luego se copia la cadena resultante y se devuelve una referencia a este nuevo objeto.<BR/><BR/>Si se conoce de antemano el tamaño aproximado del buffer resulta ideal evitar la creacion de copias de la cadena indicando el tamaño inicial a traves de EnsureCapacity() o a traves de la version sobrecargada del constructor de la clase.<BR/><BR/>Aqui un vinculo:<BR/><BR/><A HREF="http://msdn.microsoft.com/es-es/library/system.text.stringbuilder(VS.80).aspx" REL="nofollow">StringBuilder (Clase) (System.Text)</A><BR/><BR/>Saludos!!Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6163851348186121310.post-4506570049653708312008-10-19T12:52:00.000-03:002008-10-19T12:52:00.000-03:00O sea, no hay que hacer nada especial...Uhm. acabo...<I>O sea, no hay que hacer nada especial...</I><BR/><BR/>Uhm. acabo de dar un pésimo consejo. En realidad lo que hay que hacer es entender cuando el código que usa "+" es equivalente a usar el StringBuilder (y por lo tanto es preferible dejarlo tal cual para que sea más legible).<BR/><BR/>Y también hay que entender cuando realmente vale la pena micro-optimizar y cuando no (hint: usar un profiler).Leo Sotohttps://www.blogger.com/profile/16108418309169741841noreply@blogger.comtag:blogger.com,1999:blog-6163851348186121310.post-78959206300596290952008-10-19T12:44:00.000-03:002008-10-19T12:44:00.000-03:00Felipe: Define "ganancia". No se entiende si habla...Felipe: Define "ganancia". No se entiende si hablas de que una concatenación tiene un costo proporcional a n (o a log(n)) en tiempo o en espacio. Y como sea, no entiendo de donde sacas el log(n).<BR/><BR/>Por otra parte, al menos en Java cuando se concatena con "+" el compilador reemplaza eso por un StringBuilder internamente. O sea, no hay que hacer nada especial...Leo Sotohttps://www.blogger.com/profile/16108418309169741841noreply@blogger.comtag:blogger.com,1999:blog-6163851348186121310.post-74025383507949153612008-10-19T05:22:00.000-03:002008-10-19T05:22:00.000-03:00Básicamente String.Format permite dar formato a un...Básicamente String.Format permite dar formato a una variable de tipo string a través de máscaras, lo cual es muy util sobre todo para desplegar fechas, valores moneda, etc...<BR/><BR/>Pero en cuanto a concatenar cadenas de texto, sobre todo cuando existe la necesidad de hacer numerosas concatenaciones, la manera más eficiente se logra creando una instancia de StringBuilder.<BR/><BR/>StringBuilder representa un buffer de tipo string, que implica una ganancia significativa de rendimiento al hacer numerosas concatenaciones, ya que versus la forma natural de concatenar strings a través del operador de adicion, el cual hace que con cada concatenacion se reserva memoria para almacenar una nueva copia del string concatenado, StringBuilder crea una lista dinámica con cada elemento creando solo una copia del elemento total al llamar al metodo ToString(). <BR/><BR/>Cuantitativamente, a mayor cantidad de concatenaciones hay una ganancia de O(n) en la concatenacion estándar contra O log(n) de la concatenacion via StringBuilder.<BR/><BR/>SaludosAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-6163851348186121310.post-27427815011952227232008-09-29T11:04:00.000-04:002008-09-29T11:04:00.000-04:00python es otra cosa po'python es otra cosa po'Victor Hugo Saavedrahttps://www.blogger.com/profile/09420183879061622977noreply@blogger.comtag:blogger.com,1999:blog-6163851348186121310.post-36755848056540996932008-09-29T10:25:00.000-04:002008-09-29T10:25:00.000-04:00Cool.Como referencia en Java 1.5 y superior tambie...Cool.<BR/><BR/>Como referencia en Java 1.5 y superior tambien tienes String.format(), pero con un comportamiento mas cercano al printf de C ("%s" significa que ahi va un string, "%d" un entero decimal, etc, etc).<BR/><BR/>Y en Python es simplemente un operador (el simbolo de porcentaje: %), lo que<BR/>lo hace mas conciso:<BR/><BR/>>>> nombre = "Perico"<BR/>>>> print "Hola %s" % nombre<BR/>Hola PericoLeo Sotohttps://www.blogger.com/profile/16108418309169741841noreply@blogger.com