Ios 如何处理%s格式说明符
目标C代码: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
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))"
你能在你的问题中添加输出吗