如何使用 appendFormat 格式化 Swift 中的字符串?
How to use appendFormat to format a string in Swift?
我想使用 appendFormat 将字符串附加到 NSMutableString,插入空格以获得我的字符串的最小长度。
在objective-c中,我刚刚使用了
[text.mutableString appendFormat:@"%-12s", "MyString"];
我会得到
"MyString "
但在 Swift 中,我尝试了
text.mutableString.appendFormat("%-12s", "MyString")
我得到了一切,但不是 "MyString "。出现了一些不知从何而来的乱码
有谁知道为什么会这样,我应该怎么做?
谢谢大家!
let space: Character = " "
text = "MyString" + String(count: 12, repeatedValue: space)
尝试:
text.mutableString.appendFormat("%-12@", "MyString")
在Swift中,"MyString"
是一个String
对象。 %s
格式说明符导致 appendFormat()
将其参数解释为 C 样式字符串(char
的缓冲区以空值 char
终止)。
在Objective-C中,"MyString"
就是这样一个C风格的字符串。您必须在它前面加上 @
才能获得 NSString
对象 (@"MyString"
).
根据 Ken 的解释,Swift 字符串对象 不 等同于 Objective-C C 风格字符串(char
) 我找到了 this answer,它展示了如何将 Swift String 对象转换为 Cstring,%-12s
格式在其上可以正常工作。
您可以使用现有的格式字符串,如下所示:
text.mutableString.appendFormat("%-12s", ("MyString" as NSString).UTF8String)
一些示例:
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)
您应该使用 String 的方法 stringByPaddingToLength() 如下:
let anyString = "MyString"
let padedString = anyString.stringByPaddingToLength(12, withString: " ", startingAtIndex: 0) // "MyString "
我想使用 appendFormat 将字符串附加到 NSMutableString,插入空格以获得我的字符串的最小长度。
在objective-c中,我刚刚使用了
[text.mutableString appendFormat:@"%-12s", "MyString"];
我会得到
"MyString "
但在 Swift 中,我尝试了
text.mutableString.appendFormat("%-12s", "MyString")
我得到了一切,但不是 "MyString "。出现了一些不知从何而来的乱码
有谁知道为什么会这样,我应该怎么做?
谢谢大家!
let space: Character = " "
text = "MyString" + String(count: 12, repeatedValue: space)
尝试:
text.mutableString.appendFormat("%-12@", "MyString")
在Swift中,"MyString"
是一个String
对象。 %s
格式说明符导致 appendFormat()
将其参数解释为 C 样式字符串(char
的缓冲区以空值 char
终止)。
在Objective-C中,"MyString"
就是这样一个C风格的字符串。您必须在它前面加上 @
才能获得 NSString
对象 (@"MyString"
).
根据 Ken 的解释,Swift 字符串对象 不 等同于 Objective-C C 风格字符串(char
) 我找到了 this answer,它展示了如何将 Swift String 对象转换为 Cstring,%-12s
格式在其上可以正常工作。
您可以使用现有的格式字符串,如下所示:
text.mutableString.appendFormat("%-12s", ("MyString" as NSString).UTF8String)
一些示例:
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)
您应该使用 String 的方法 stringByPaddingToLength() 如下:
let anyString = "MyString"
let padedString = anyString.stringByPaddingToLength(12, withString: " ", startingAtIndex: 0) // "MyString "