如何处理%s格式说明符

时间:2018-02-08 10:04:49

标签: ios swift

Objective-C代码:

NSString *str = @"hi";
NSString *strDigit = @"1934"; (or @"193" may be a 3 digit or 4 digit value)

[dayText appendFormat:@"%@%4s,str,[strDigit UTF8String]];

Objective-C代码处理输出字符串时出现当前对齐,输出为3或4位数。它正确地与左对齐并且与它的位数无关。任何人都知道如何在Swift中处理这个问题?

在Swift中我尝试使用下面的代码,字符串没有根据位数调整对齐。

textForTrip += "\(str) \(String(format:"%4s", (strDigit.utf8))"

2 个答案:

答案 0 :(得分:2)

%s格式需要指向(以NULL结尾的)C字符串的指针 作为参数,可以使用withCString方法获得。 这将产生与Objective-C代码相同的输出:

let str = "Hi"
let strDigit = "193"

let text = strDigit.withCString {
    String(format: "%@%4s", str, $0)
}
print(text)

如果将数字存储为整数而不是a,则会更容易 字符串:

let str = "Hi"
let number = 934

let text =  String(format: "%@%4d", str, number)
print(text)

答案 1 :(得分:0)

尝试以下方法,这可能会对您有所帮助

let strDigit = "\("1934".utf8)" //(or @"193" may be a 3 digit or 4 digit value)
var dayText = "Hello, good morning."
dayText += "\(strDigit.prefix(3))"