迅速如何分割字符串但包含分隔符

时间:2018-07-04 10:46:39

标签: swift

我有一个类似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”。

2 个答案:

答案 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"]
相关问题