Certains affirment que la programmation est un art et, finalement, je ne peux qu'être d'accord surtout quand il est venu à travers des solutions très différentes pour le même problème. Pour comprendre comment cela est vrai comment un besoin identique dans la langue medisimo (JavaScript) peuvent être résolus par des approches totalement différentes et originales.
Gauche de la tablette à zéro
. Un certain nombre, mais la discussion est également valable pour n'importe quelle chaîne, tels que 123 peut être rempli sur la gauche - à la cravate - avec un certain nombre de zéros, par exemple 00123 . Ce besoin a à plusieurs reprises et il est utile de mettre dans une colonne - ou tout au moins montrer - un nombre d'une manière propre, implicitement en indiquant sa valeur maximale. . Dans le jeu, par exemple, le score classique (la partition) est souvent qualifié de 001234 , ce qui indique que tout au plus nous arriverons à 999999 . Voici comment le même problème a été résolu par différents promoteurs:
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 | / ** * Chaîne Pad Gauche * * @ De http://snipplr.com/view/8423/left-pad-string/ * @ Auteur Web-http: / / www.mechanicmatt.com/ * * Num @ Param - Striga à remplir * @ Param totalChars - Nombre total de caractères, y compris les "zéros" * @ Param padWidth - Caractère utilisé pour remplir, par défaut "0" * / num , totalChars , padWith ) { leadingZeros fonction (num, totalChars, padWith) { "" ; num = num + ""; padWith ) ? padWith : "0" ; ? padWith = (padWith) padWith: "0"; num. length < totalChars ) { if (longueur n <totalChars) { num. length < totalChars ) { tout (longueur n <totalChars) { num ; num = num + padWith; } { } Else {}} num. length > totalChars ) { //if padWith was a multiple character string and num was overpadded if (longueur> Non totalChars) {/ / si padWith a été chaîne de caractères multiples et num était overpadded ( ( num. length - totalChars ) , totalChars ) ; num = num substring ((longueur n - totalChars), totalChars).; { } Else {}} retour num; } leadingZeros ( "asdf" , 10 , "0" ) ) ; alert (leadingZeros ("asdf", 10, "0")); |
scegliendo anche il tipo di carattere da usare tramite padWidth , invece del default 0 . Cette solution est extrêmement articulé, mais vous permet d'ajouter n'importe quel nombre de 0 au nombre num choisir le type de police utilisée par padWidth , au lieu de la valeur par défaut 0 .
Très original, cependant, cette solution:
1 2 3 4 5 6 7 8 9 10 11 12 13 | / ** * String_pad * * @ De http://snipplr.com/view/700/stringpad/ * @ Auteur http://d.hatena.ne.jp/brazil/20060721/1153489937 * * Str @ Param - Striga à remplir * @ Param len - Nombre de caractères, y compris les "zéros" * Ch @ Param - Le caractère utilisé pour remplir * / str , len , ch ) { return new Array ( len - ( '' + str ) . length + 1 ) . join ( ch ) + str } pad de fonction (str, len, ch) {return new Array. (len -. (str +'') de longueur + 1) rejoindre (CH) + str} pad ( 56 , 4 , '0' ) ) ; // 0056 alert (pavé (56, 4, '0 ')) / / 0056 |
Même résultat, avec une approche complètement différente. . Encore une fois, nous avons la possibilité de décider du nombre de caractères de remplissage à l'aide du paramètre len et du type de police à utiliser avec les ch . Missing est l'utilisation de défaut fournis dans la fonction ci-dessus.
Celui que j'utilise, mais ...:
1 2 3 4 5 6 7 8 9 10 11 12 | / ** * String_pad * * @ Auteur Giovambattista Fazioli * @ Web http://www.undolog.com * * @ Param s - Striga à remplir * @ Param s - la chaîne de caractères qui indique que la longueur * Tels que "0000" = longueur caractère «0» 4 * / s , l ) { return ( l. substr ( 0 , ( l. length - s. length ) ) + s ) ; } fonction de rembourrage (S, L) {return (l substr (0, (l longueur - longueur s)) + s);} padding ( '123' , '0000' ) ) ; alert (padding ('123 ', '0000')); |
Si vous avez d'autres solutions intéressantes, n'hésitez pas à commenter ![]()










Ligne 12 de votre fonction suppose que doit être:
alert (padding ('123 ', '0000'));@ Napolux:
Correct!
Intéressant, les 3 approches différentes!
[...] Déjà vu dans la variété poste de codage et le codage des approches qu'un développeur peut avoir à résoudre un problème sont différents et [...]
J'ai testé la synchronisation de ces trois méthodes. Le premier devrait être plus lent, tandis que le troisième est sacrément rapide.
J'ai lancé 100000 fois chaque méthode afin de lui faire le rembourrage à dix chiffres d'un numéro à quatre chiffres, et j'ai recueilli de temps en temps le temps d'exécution avec un simple
2
3
4
5
6
7
8
0 ; var temps = 0;
... ) { pour les (...) {
new Date ) . getTime ( ) ; = temps (nouvelle date) getTime ().;
robaDaEseguire ();
= ( ( new Date ) . getTime ( ) - time ) ; synchronisations [i] = ((nouvelle date) getTime () - temps.);
}
A la fin j'ai calculé la moyenne arithmétique des temps individuels.
Le premier algorithme emploie 0,06896 secondes il prend la deuxième et la troisième va 0,06896 à 0,01331.
Augmenter le nombre de lancements de un million, la différence entre les trois commence à être palpable:
Le premier algorithme emploie 0.047184 secondes, le deuxième et le troisième seulement 0.028644 0.018635.
Ma recherche est devenue inutile pour l'instant. A très bientôt, les jeunes hommes.
PS: ce n'est évidemment prises avec un sourire ...
@ Unwiredbrain:
Par curiosité, sur quel navigateur vous avez effectué les tests? Avez-vous essayé d'autres navigateurs pour voir si il ya des différences entre les navigateurs et navigateur?
@ Napolux: bravo! Vous avez pris les paroles de la bouche
Je ... J'ai été intrigué pour essayer Google Chrome 
PHP est toujours le même, les changements JS basé sur le navigateur, non?
@ Napolux:
Je lui ai expliqué le mal ... je veux dire "changer le moteur JS basé sur le navigateur"
@ Napolux , Giovambattista Fazioli : Firefox 3.0.3 sur Linux.
Opéra de cours fait ressortir les résultats pour le moins passionnant: l'ordre 0.010882, 0.013681 et (Bravo) 0,007994 millisecondes! Pratiquement, 77, 52 et 57% de moins!
Ah, je vois maintenant que dans le commentaire précédent parlait de seconde: en effet il est millisecondes .
J'aimerais voir comment les choses sont à la maison KHTML / WebKit et Firefox 3.1, mais n'ont pas encore suffisamment de force et de stabilité pour être en mesure de faire des tests sérieux. S'il vous plaît de le nier, si vous savez quelque chose à ce sujet, je serais heureux ...
Comme pour Chrome, quand il est disponible pour Linux pour me serrer très bien ...
Salutations.
PS: Bientôt, je vais publier les sources de suites de tests, maintenant je n'ai vraiment pas le temps ...
Mais surtout: pourquoi mon gravatar est allé joyeuses jeunes filles qui sont auto-commercialisation Mystères de getAvatar ...
@ Napolux:
Correct! Toutefois, pour être précis, mais PHP est pas tout à fait la même chose, il ya différentes versions sur des serveurs différents avec des extensions différentes. Mais ce n'est à envisager pour des cas beaucoup plus compliqué que le nôtre.
@ Giovambattista Fazioli:
Impôt ...
@ Napolux: Seule avec toi je ne peux pas se permettre d'être "précis" ... au moins vous comprenez ce que je voulais dire
et d'apprécier la fiscalité 
Maintenant je commence à trolleggiare ici, un peu "à moi comme ils l'ont fait pour KB / kb / kb et compagnie.
@ Napolux : Kib et KiB tout résoudre.