Variedad de codificación y la codificación

Algunos argumentan que la programación es un arte y, en última instancia, sólo pueden ponerse de acuerdo sobre todo cuando se encontró con soluciones muy diferentes para el mismo problema. Para entender cómo esto es verdad ¿cómo una misma necesidad en medisimo lenguaje (JavaScript) pueden ser resueltos por métodos completamente diferente y original.

Almohadilla cero a la izquierda

. Un número, pero la discusión es válida también para cualquier cadena, como la 123 se puede llenar a la izquierda - para atar - con un número de ceros, por ejemplo, 00123 . Esta necesidad, en varias ocasiones y es útil para poner en una columna - o al menos mostrar - una serie de una manera limpia, de manera implícita que indica su valor máximo. . En el juego, por ejemplo, la puntuación clásica (la puntuación) se refiere a menudo 001234 , lo que indica que en la mayoría de nosotros llegaremos a 999999 . He aquí cómo el mismo problema ha sido resuelto por varios desarrolladores:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/ **
* Cadena Pad Izquierda
*
* @ Desde http://snipplr.com/view/8423/left-pad-string/
* @ Autor web-http: / / www.mechanicmatt.com/
*
* @ Param num - Striga para llenar
* @ Param totalChars - El número total de caracteres, incluyendo los "ceros"
* @ Param padWidth - carácter utilizado para rellenar, por defecto "0"
* /
num , totalChars , padWith ) { leadingZeros función (num, totalChars, padWith) {
"" ; num = num + "";
padWith ) ? padWith : "0" ; ? padWith = (padWith) padWith: "0";
num. length < totalChars ) { if (longitud n. <totalChars) {
num. length < totalChars ) { while (n º de longitud <totalChars) {
num ; num = num + padWith;
}
{ } Else {}}

num. length > totalChars ) { //if padWith was a multiple character string and num was overpadded if (longitud> No. totalChars) {/ / si se padWith cadena de caracteres múltiples y números overpadded se
( ( num. length - totalChars ) , totalChars ) ; num = num substring ((N º de longitud - totalChars), totalChars).;
{ } Else {}}

volver num;
}
leadingZeros ( "asdf" , 10 , "0" ) ) ; alert (leadingZeros ("asdf", 10 "0"));

scegliendo anche il tipo di carattere da usare tramite padWidth , invece del default 0 . Esta solución es muy elocuente, sin embargo, le permite agregar cualquier número de 0 al número num elegir el tipo de fuente utilizada por padWidth , en lugar del predeterminado 0 .
Muy original, sin embargo, esta solución:

1
2
3
4
5
6
7
8
9
10
11
12
13
/ **
* String_pad
*
* @ Desde http://snipplr.com/view/700/stringpad/
* @ Autor http://d.hatena.ne.jp/brazil/20060721/1153489937
*
* @ Param str - Striga para llenar
* @ Param len - Número de caracteres, incluyendo los "ceros"
* @ Param ch - carácter utilizado para rellenar
* /
str , len , ch ) { return new Array ( len - ( '' + str ) . length + 1 ) . join ( ch ) + str } plataforma de la función (str, len, ch) {return new Array. (len -. (''str +) de longitud + 1) join (ch) + str}

pad ( 56 , 4 , '0' ) ) ; // 0056 alert (pad (56, 4, '0 ')) / / 0056

Mismo resultado, con un enfoque completamente diferente. . Una vez más tenemos la oportunidad de decidir el número de caracteres de relleno utilizando el parámetro len y el tipo de fuente que desea utilizar con ch . Que falta es el uso de incumplimiento previsto en la función anterior.
El que yo uso, pero ...:

1
2
3
4
5
6
7
8
9
10
11
12
/ **
* String_pad
*
* @ Autor Giovambattista Fazioli
* @ Web http://www.undolog.com
*
* @ Param s - Striga para llenar
* @ Param s - la cadena de caracteres que indica es que la longitud
* Tales como "0000" = longitud de caracteres "0" 4
* /
s , l ) { return ( l. substr ( 0 , ( l. length - s. length ) ) + s ) ; } la función de relleno (s, l) {return (l substr (0, (longitud l - longitud s)) + s);}
padding ( '123' , '0000' ) ) ; alert (relleno ('123 ', '0000'));

Si usted tiene otras soluciones interesantes no dudéis en comentar : D

16 comentarios a "una variedad de códigos y codificación"

  1. 14 de octubre 2008 Napolux :

    La línea 12 de su función supongo debe ser:

     alert (relleno ('123 ', '0000'));
    
  2. 14 de octubre 2008 Giovambattista Fazioli :

    @ Napolux:

    La línea 12 de su función supongo debe ser: alert (relleno ('123 ', '0000'));

    ¡Correcto! : D

  3. 15 de octubre 2008 Francis Gaven :

    Interesante, los tres enfoques diferentes! :)

  4. 20 de octubre 2008 Camelize, CamelCase | Undolog.com :

    [...] Ya se ve en la variedad después de la codificación y la codificación de los enfoques que un desarrollador puede tener que resolver un problema son diferentes y [...]

  5. 06 de noviembre 2008 unwiredbrain:

    He probado la sincronización de los tres métodos. El primero se espera que sea más lento, mientras que el tercero es condenadamente rápido.

    Me lanzó 100.000 veces al método con el fin de hacer que el relleno a diez dígitos de un número de cuatro dígitos, y que he recogido de vez en cuando el tiempo de ejecución con un simple

    1
    2
    3
    4
    5
    6
    7
    8
    [ ] ; tiempos var = [];
    0 ; var tiempo = 0;

    ... ) { para (...) {
    new Date ) . getTime ( ) ; tiempo = (new Date) getTime ().;
    robaDaEseguire ();
    = ( ( new Date ) . getTime ( ) - time ) ; los tiempos de [i] = ((nueva fecha) getTime () - tiempo.)
    }

    Al final he calculado la media aritmética de los tiempos individuales.

    El primer algoritmo utiliza 0,06896 segundos que tarda el segundo y el tercero va 0,06896 hasta 0,01331.

    El aumento del número de lanzamientos de un millón, la diferencia entre las tres empieza a ser palpable:
    El primer algoritmo utiliza 0.047184 segundos, el segundo y el tercero sólo 0.018635 0.028644.

    Mi investigación se ha convertido en inútil por ahora. Nos vemos pronto, los hombres jóvenes.

    PS: este es, obviamente, se toma con una sonrisa ... ;-)

  6. 06 de noviembre 2008 Napolux :

    @ Unwiredbrain:
    Por curiosidad, el navegador que han llevado a cabo las pruebas? ¿Has probado otros navegadores para ver si hay diferencias entre los navegadores y?

  7. 06 de noviembre 2008 Giovambattista Fazioli :

    @ Napolux: bravo! Que ha tomado las palabras de la boca : D Yo ... Yo estaba intrigado para tratar de Google Chrome : D

  8. 06 de noviembre 2008 Napolux :

    PHP sigue siendo los mismos cambios, JS basado en el navegador, ¿verdad? : P

  9. 07 de noviembre 2008 Napolux :

    @ Napolux:

    PHP sigue siendo los mismos cambios, JS basado en el navegador, ¿verdad?

    Le expliqué mal ... me refiero a "cambiar el motor de JS basado en el navegador"

  10. 07 de noviembre 2008 unwiredbrain:

    @ Napolux , Giovambattista Fazioli : Firefox 3.0.3 en Linux.

    Opera, por supuesto, pone de manifiesto los resultados por decir lo menos interesante: la orden de 0.010882, 0.013681 y (escuchar escuchar) 0,007994 milisegundos! En la práctica, 77, 52 y 57% menos!

    Ah, ahora veo que en el comentario anterior estaba hablando acerca de la segunda: de hecho, es milisegundos .

    Me gustaría ver cómo son las cosas en casa KHTML / Webkit, y Firefox 3.1, pero todavía no tienen la fuerza y ​​estabilidad suficientes para poder hacer algunas pruebas serias. Por favor, negar que si usted sabe algo al respecto, me encantaría ... :-)

    En cuanto a Chrome, que está disponible para Linux que me apriete muy bien ... ;-)

    Saludos.

    PD: Pronto voy a publicar las fuentes de conjuntos de pruebas, ahora realmente no tengo tiempo ...

  11. 07 de noviembre 2008 unwiredbrain:

    Pero sobre todo: ¿por qué mi gravatar se ha ido a la alegre doncellas que son auto-comercialización Misterios de getAvatar ...

  12. 07 de noviembre 2008 Giovambattista Fazioli :

    @ Napolux:

    Le expliqué mal ... me refiero a "cambiar el motor de JS basado en el navegador"

    ¡Correcto! Sin embargo, para ser más precisos, pero PHP no es lo mismo, hay diferentes versiones en diferentes servidores con diferentes extensiones. Pero esto es para ser considerado para casos mucho más complicados que el nuestro. : D

  13. 10 de noviembre 2008 Napolux :

    @ Giovambattista Fazioli:

    @ Napolux: he explicado mal ... me refiero a "cambiar el motor de JS basado en el navegador" ¡Correcto! Sin embargo, para ser más precisos, pero PHP no es lo mismo, hay diferentes versiones en diferentes servidores con diferentes extensiones. Pero esto es para ser considerado para casos mucho más complicados que el nuestro.

    Impuestos ... : P

  14. 10 de noviembre 2008 Giovambattista Fazioli :

    @ Napolux: Sólo usted con que no puede permitirse el lujo de ser "preciso" ... por lo menos a entender lo que quería decir : D y apreciar la imposición : D

  15. 10 de noviembre 2008 Napolux :

    Ahora comienzo a trolleggiare aquí, un poco "a mí como lo hicieron para KB / kb / kb y compañía.

    : Lol:

  16. 10 de noviembre 2008 unwiredbrain:

    @ Napolux : Kib y KiB resolverlo todo.

Deja un comentario

XHTML PERMISO TAG: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> código de inserción:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL 


Dejar de SOPA