Je voudrais formater une chaîne avec une autre chaîne comme celle-ci:
var str = "Hello, playground"
print (String(format: "greetings %s", str))
Cela conduit à ce beau résultat:
salutations 哰 ૧
J'ai essayé avec% @ et cela fonctionne mais, comme je reçois une chaîne de formatage à partir d'un autre langage de programmation, je voudrais, si possible, utiliser la balise% s. Y a-t-il un moyen de le faire?
Si le format provient d'une source externe fiable, vous pouvez le convertir pour remplacer les occurrences de %s
avec %@
:
Donc, au lieu de:
String(format: "greetings %s", str)
Tu fais:
String(format: "greetings %s".replacingOccurrences(of: "%s", with: "%@"), str)
Si le format est complexe , un simple remplacement ne fonctionnera pas. Par exemple:
%1$s
%%s
%-10s
Dans des cas similaires, nous devons nous en tenir à une chaîne C.
Donc au lieu de:
String(format: "greetings %s", str)
Tu fais:
str.withCString {
String(format: "greetings %s", $0)
}