> 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

Reply via email to