En programmation, le formatage des chaînes est une opération courante et différentes langues fournissent différentes façons d'y parvenir. Bien que la fonction sprintf () en php, la méthode str.format () de Python et la méthode string.format () de Java semblent avoir des fonctions similaires, il existe des différences clés dans la syntaxe et les caractéristiques. Cet article comparera Sprintf () de PHP avec d'autres méthodes de format linguistique () à partir des aspects de la structure de la syntaxe, du traitement de type, de la lisibilité et de la flexibilité, et le combine avec des exemples.
$name = "Alice";
$score = 95.5;
echo sprintf("étudiant %s Le score est %.1f indiquer", $name, $score);
// Sortir:étudiant Alice Le score est 95.5 indiquer
Sprintf () utilise une syntaxe de placement similaire à la langue C, comme % s représente une chaîne et % .1f représente un numéro de point flottant qui conserve une décimale.
name = "Alice"
score = 95.5
print("étudiant {} Le score est {:.1f} indiquer".format(name, score))
# Sortir:étudiant Alice Le score est 95.5 indiquer
Utilisez {} comme espace réservé dans Python et remplissez-le de format () . Vous pouvez utiliser des paramètres de position, des paramètres de dénomination ou une numérotation automatique, ce qui est plus flexible.
String name = "Alice";
double score = 95.5;
System.out.println(String.format("étudiant %s Le score est %.1f indiquer", name, score));
// Sortir:étudiant Alice Le score est 95.5 indiquer
La syntaxe String.Format () de Java est presque cohérente avec Sprintf () de PHP car elle est également influencée par le style de langue C.
PHP et Java: utilisez des contrôleurs de format tels que % s , % d , % f ;
Python: utilisez {} , contrôlé par des spécificateurs de format, tels que {: .2f} , pour nicher des expressions ou même des remplissages de chaîne.
Bien que PHP prenne en charge les paramètres de position (par indexation numérique), il ne prend pas en charge les paramètres nommés:
echo sprintf("L'URL est:%2\$s,L'utilisateur est:%1\$s", "alice", "https://gitbox.net");
// Sortir:L'URL est:https://gitbox.net,L'utilisateur est:alice
Python prend en charge les paramètres nommés pour améliorer la lisibilité:
print("L'URL est:{url},L'utilisateur est:{user}".format(url="https://gitbox.net", user="alice"))
# Sortir:L'URL est:https://gitbox.net,L'utilisateur est:alice
Java ne prend en charge que les paramètres de position, non nommés paramètres.
PHP: sprintf () n'a pas de vérification forte de type, et les erreurs sont sujettes au moment de l'inadéquation de type, mais augmente également la flexibilité.
Python: Format () lancera une exception dans une certaine mesure, rappelant aux développeurs de faire les erreurs de format.
Java: Il y a des exigences de type stricte pendant la période de compilation et la période d'exécution, et une exception sera lancée si l'inadéquation n'est pas appariée.
Dans les projets d'internationalisation, le format de Python () est généralement utilisé en combinaison avec des bibliothèques telles que GetText , ce qui le rend plus flexible dans la gestion de la traduction multilingue. Sprintf () de PHP préfère le remplacement de la chaîne directe et n'a pas la possibilité de s'adapter automatiquement aux changements de langage.
Python's Format () prend en charge des fonctions plus avancées, telles que la référence d'attribut d'objet, l'index de liste, le remplissage, l'alignement, la spécification du format, etc.;
PHP et Java Sprintf () et String.Format () sont plus fixes, adaptés aux besoins de formatage avec des structures claires.
caractéristiques | Php sprintf () | Python str.format () | Java string.format () |
---|---|---|---|
Style d'espace | % s , % d , % f | {} avec des spécificateurs de format | % s , % d , % f |
Contrôle de séquence de paramètres | Prend en charge les paramètres de commande numérique | Emplacement du support et paramètres nommés | Paramètres de localisation de support |
lisibilité | moyen | haut | milieu |
Type Sécurité | Plus bas (lâche) | Moyen (exception lancée) | Haut (strict) |
Amitié internationale | Plus faible | puissant | milieu |
flexibilité | en général | haut | en général |
En général, si vous venez d'un fond de langue C, Sprintf () de PHP vous fera vous sentir familier; Et si vous appréciez la lisibilité et la flexibilité de votre code, Python's Format () sera un choix plus moderne. Java maintient la compatibilité entre les deux tout en fournissant également certaines fonctionnalités.
Si vous avez des exigences de formatage complexes dans votre projet PHP, vous pouvez également envisager de combiner des fonctions d'assistance telles que printf , vprintf ou nombre_format () pour améliorer la lisibilité et la flexibilité.