如何使用appendFormat格式化Swift中的字符串?

kob*_*chi 9 xcode nsmutablestring ios swift

我想使用appendFormat将字符串附加到NSMutableString,插入空格以获得字符串的最小长度.

在objective-c中,我刚刚使用过

[text.mutableString appendFormat:@"%-12s", "MyString"];
Run Code Online (Sandbox Code Playgroud)

我会的

"MyString    "
Run Code Online (Sandbox Code Playgroud)

但在斯威夫特,我试过了

text.mutableString.appendFormat("%-12s", "MyString")
Run Code Online (Sandbox Code Playgroud)

我得到了一切,但不是"MyString".它似乎是一些随机字符,我不知道它来自哪里.

有没有人知道为什么会这样,我该怎么办?

感谢你们!

Ada*_*m S 5

通过Ken关于Swift String对象等同于Objective-C C样式字符串(以NULL终止的数组char)的解释,我找到了此答案该答案显示了如何将Swift String对象转换为Cstring,其%-12s格式正确地起作用上。

您可以使用现有的格式字符串,如下所示:

text.mutableString.appendFormat("%-12s", ("MyString" as NSString).UTF8String)
Run Code Online (Sandbox Code Playgroud)

一些例子:

var str = "Test"
str += String(format:"%-12s", "Hello")
// "Test–yç       " (Test, a dash, 11 random characters)

var str2 = "Test"
str2 += String(format:"%-12@", "Hello")
// "TestHello" (no padding)

var str3 = "Test"
str3 += String(format:"%-12s", ("Hello" as NSString).UTF8String)
// "TestHello       " ('Hello' string is padded out to 12 chars)
Run Code Online (Sandbox Code Playgroud)


Leo*_*bus 5

您应该使用String的方法stringByPaddingToLength()如下:

let anyString = "MyString"
let padedString = anyString.stringByPaddingToLength(12, withString: " ", startingAtIndex: 0)  // "MyString    "
Run Code Online (Sandbox Code Playgroud)