Сломать строку в SWIFT - PullRequest
       4

Сломать строку в SWIFT

0 голосов
/ 19 апреля 2020

Как я могу разбить строку пробелами? Я привык брать данные до / после слова, специального символа или пробела. Тем не менее, я работаю над приложением декодера, где моя строка будет выглядеть так:

Это загруженный код, который будет установлен в строку: «09627189762»

let str = downloadedCode
print(str) //09627189762

И мне нужно отформатировать его здесь, чтобы он мог печатать, как показано ниже:

let strA = //breakdown first 2 characters
let strB = //breakdown 3rd character etc
let strC = //do something
let strD = //do something
let strE = //do something
let strF = //do something

print(strA) //prints 09
print(strB) //prints 6
print(strC) //prints 27
print(strD) //prints 189
print(strE) //prints 7
print(strF) //prints 62

Все эти числа имеют различное значение, которое требует кодирования, поэтому я должен разбить строку на основе количество символов?

1 Ответ

1 голос
/ 19 апреля 2020

Вы можете использовать регулярное выражение, чтобы разбить входную строку на части постоянной длины. В приведенном ниже примере каждая (\\d{X}) часть шаблона означает «соответствовать последовательности цифр X».

func splitString(_ str: String) -> [String] {
    let regex = try! NSRegularExpression(pattern: 
       "(\\d{2})(\\d{1})(\\d{2})(\\d{3})(\\d{1})(\\d{2})")
    var parts = [String]()
    if let match = regex.firstMatch(in: str, range: NSMakeRange(0, str.count)) {
        let nsstr = str as NSString
        for i in 1 ..< match.numberOfRanges {
            let part = nsstr.substring(with: match.range(at: i))
            parts.append(part)
        }
    }
    return parts
}

print(splitString("09627189762")) // ["09", "6", "27", "189", "7", "62"]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...