Получить значения из строки, используя формат SWIFT - PullRequest
0 голосов
/ 13 октября 2018

Я начал с этого:

Я хотел отформатировать предложения с использованием определенной строки

let formatter = "%@ is friend of %@"
let you = "you"
let me = "me"
let reply = String(format: formatter, you, me)

Это прекрасно работает.Он печатает Ты мой друг

Теперь я хочу противоположность этому, то есть

если у меня есть такая строка Ты мой друг Я хочу получить значения из этой строки, используя форматер "%@ is friend of %@", чтобы он выдавал массив значений как ("вы", "я")

Любое предложение полезно

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

Это немного сложно, но вы можете попробовать использовать регулярные выражения.

let reply = "You is friend of me"
let format = "%@ is friend of %@"

var result: [String] = []

let pattern = NSRegularExpression.escapedPattern(for: format)
    .replacingOccurrences(of: "%@", with: "(.*)")
let regex = try! NSRegularExpression(pattern: "^" + pattern + "$")
if let match = regex.firstMatch(in: reply, range: NSRange(0..<reply.utf16.count)), match.numberOfRanges > 0 {
    for i in 1..<match.numberOfRanges {
        result.append(String(reply[Range(match.range(at: i), in: reply)!]))
    }
} else {
    print("format does not match")
}

print(result) //->["You", "me"]

Пожалуйста, попробуйте этот код для другого формата и текст результата, сгенерированный с форматом.

0 голосов
/ 13 октября 2018

Можно попробовать

let str = yourString.replacingOccurrences(of: " is friend of ", with: ",")
let arr = str.components(separatedBy: ",")
print("first:- \(arr[0]) , second:- \(arr[1])")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...