swift : Verwendung von %s-String(format: ...)
Möchte ich formatieren einer Zeichenfolge mit einer anderen Zeichenfolge wie diese:
var str = "Hello, playground"
print (String(format: "greetings %s", str))
Diese führt zu diesem schönen Ergebnis:
Grüße 哰૧
Habe ich versucht mit %@ und es funktioniert, aber, wie ich bin immer in der format-string aus
eine andere Programmiersprache, ich würde gerne, wenn möglich, verwenden Sie den %s tag.
Gibt es einen Weg ?
- Die
"%s"
formatbezeichners gibt an, eine C-string — eine null-terminierte Folge von bytes. Es wird auch nicht richtig behandeln, die nicht-ASCII/UTF-8-Codierungen. Können Sie nicht nach "%s" im format-string bekommen Sie und ersetzen Sie es mit "%@"? %s
erwartet einen C-string, nicht einen Swift string.- Warum nicht einfach
"greetings \(str)"
? - Wenn Sie möchten, CString: stackoverflow.com/questions/24103590/... (es ist ein Swift 3 Antworten)
- Ich möchte vermeiden, das format der Konstruktor in String, so viel wie möglich. Die %s escape ist nicht gemacht für Objective-C noch Swift-strings, es ist für C-Saite nur. Vermeiden Sie die %s in der lokalisierten text um jeden Preis zu...
- Interessant, dass die Macher von Swift entschied %s sollte NICHT mit String. Nicht sicher, was für einen Vorteil bietet? Und könnte es nicht sein, irgendwie überlastet?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lösung 1: ändern des formats
Wenn das format aus einer zuverlässigen externen Quelle, die Sie konvertieren können, es ersetzt Vorkommnisse von
%s
mit%@
:Statt:
Können Sie tun:
Lösung 2: ändern Sie die Zeichenfolge
Wenn das format ist Komplex, ein einfacher Austausch nicht funktionieren. Zum Beispiel:
%1$s
%%s
%-10s
In ähnlichen Fällen, die wir brauchen, zu bleiben, um eine C-Zeichenfolge.
Also statt:
Können Sie tun: