我有一个类似100 + 8 - 9 + 10
的字符串,如何获取数组中的["100", "+", "8", "-", "9", "+", "10"]
。
let string = "100 + 8 - 9 + 10"
let splitted = string.split(omittingEmptySubsequences: true, whereSeparator: { ["+", "-"].contains(String($0)) })
但是我得到了["100", "8", "9", "10"]
,我输了+
和-
,有什么好方法吗?谢谢!
编辑 感谢您的评论,不保证空格。可能像“ 100 + 8-9”。
答案 0 :(得分:3)
您可以将字符串用空格分开。
let splitted = string.split(separator: " ")
splitted
的值为
["100", "+", "8", "-", "9", "+", "10"]
答案 1 :(得分:2)
如果您不知道字符串是否包含空格,则应该使用Scanner
let string = "100 + 8 - 9 + 10"
let removed = string.replacingOccurrences(of: " ", with: "")
// "100+8-9+10"
let scanner = Scanner(string: removed)
let operators = CharacterSet(charactersIn: "+-*/")
var components: [String] = []
while !scanner.isAtEnd {
var value: Int = 0
if scanner.scanInt(&value) {
components.append("\(value)")
}
var op: NSString? = ""
if scanner.scanCharacters(from: operators, into: &op) {
components.append(op! as String)
}
}
print(components)
// ["100", "+", "8", "-", "9", "+", "10"]