在我的 iOS 应用程序中,我将团队名称另存为
very_complex name (number playes)
Run Code Online (Sandbox Code Playgroud)
并获得团队的全名,我需要根据这种格式读取/拆分该字符串
%s (%s)
就像我们习惯在 C 中使用 ``sscanf()` 那样。我们如何在 Swift 中做到这一点?
不幸的是,sscanf() 没有就地替代品,但方法是使用 Scanner 类(Apple 文档和raywenderlich.com提供)。
对于你的情况:
let str = "My Team Name (2 players)" // %s (%d %s)
let scanner = Scanner(string: str)
var firstStrVal: NSString?
var dummyStrVal: NSString?
var intVal: Int = 0
var secondStrVal: NSString?
scanner.scanUpTo(" (", into: &firstStrVal)
scanner.scanCharacters(from: CharacterSet.init(charactersIn: "("), into: &dummyStrVal)
scanner.scanInt(&intVal)
scanner.scanUpTo(")", into: &secondStrVal)
print(str)
print(firstStrVal!)
print(intVal)
print(secondStrVal!)
print("\(firstStrVal!) (\(intVal) \(secondStrVal!))")
Run Code Online (Sandbox Code Playgroud)
结果:
My Team Name (2 players)
My Team Name
2
players
My Team Name (2 players)
Run Code Online (Sandbox Code Playgroud)