быстро, как разбить строку, но содержит разделители - PullRequest
0 голосов
/ 04 июля 2018

У меня есть строка типа 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"], я потерял + и -, какой-нибудь хороший способ? Спасибо!

EDIT Спасибо за комментарий, не гарантирую про места. Может быть как "100 + 8 - 9".

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Если вы не знаете, будет ли строка содержать пробелы, вам, вероятно, следует использовать 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"]
0 голосов
/ 04 июля 2018

Вы можете просто разбить вашу строку на пробелы.

let splitted = string.split(separator: " ")

Значение splitted равно

["100", "+", "8", "-", "9", "+", "10"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...