> On 3 Sep 2016, at 12:22, Quincey Morris <quinceymor...@rivergatesoftware.com> > wrote: > > On Sep 2, 2016, at 22:02 , Gerriet M. Denkmann <gerr...@mdenkmann.de> wrote: >> >> Did in a playground: >> >> let s = String(format: "%2s → %2s", "a", "b") >> >> print(“formatted = \"\(s)\"") >> >> But this prints random garbage (e.g.: formatted = “‡“S → ‡“S”) (no >> error message or compiler warning). >> >> Why? > > Because %s is the specifier for a C-string, and “a", "b" are Swift strings.
Sorry. This I should have known. But: let scom3 = String(format: "%9@", "a") print(“formatted %9@ = \”\(scom3)\"") → formatted %9@ = "a" I.e. the size parameter 9 seems to be ignored. (I kind of remember having the same problem in Objective-C). > >> How to create a formatted string? […] > If you absolutely must use %2s, the following works too (in a playground): > > let s = String(format: "%2s → %2s", ("a" as NSString).utf8String!, ("b" > as NSString).utf8String!) > > but that’s a lot of ugly. Ugly, but better than all the other work-arounds I have tried: let scom1 = String(format: "%9s", ("a" as NSString).UTF8String) print(“formatted %9s = \”\(scom1)\”") → formatted %9s = " a" Kind regards, Gerriet. _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com