Ios 如何处理%s格式说明符

Ios 如何处理%s格式说明符,ios,swift,Ios,Swift,目标C代码: NSString *str = @"hi"; NSString *strDigit = @"1934"; (or @"193" may be a 3 digit or 4 digit value) [dayText appendFormat:@"%@%4s,str,[strDigit UTF8String]]; let str = "Hi" let strDigit = "193" let text = strDigit.withCString { String(fo

目标C代码:

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

[dayText appendFormat:@"%@%4s,str,[strDigit UTF8String]];
let str = "Hi"
let strDigit = "193"

let text = strDigit.withCString {
    String(format: "%@%4s", str, $0)
}
print(text)
当输出为3或4位数字时,Objective-C代码处理当前对齐的输出字符串。它正确地向左对齐,不管有多少位数。有人知道如何用Swift处理这件事吗

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

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

%s
格式需要指向(以NULL结尾的)C字符串的指针 作为参数,可以使用
withCString
方法获得。 这将产生与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]];
let str = "Hi"
let strDigit = "193"

let text = strDigit.withCString {
    String(format: "%@%4s", str, $0)
}
print(text)
如果将数字存储为整数而不是整数,则会更容易 字符串:


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

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

你能在你的问题中添加输出吗