Я пытаюсь использовать регулярное выражение и диапазон в первый раз в Swift. Я хочу посмотреть, будет ли письмо, которое пользователь вводит в текстовое поле, будет соответствовать тому, что они должны угадать. Если он соответствует совпадающей букве, или буквы будут отображаться в UILabel (подобно тому, как вы играете в палача, если вы угадываете правильную букву один раз, и есть несколько вхождений этой буквы, все проявления будут отображаться). Когда нажимается кнопка, вызывается метод ниже. Он отлично работает при поиске совпадающих букв и вставляет их в нужное место, НО, когда UILabel обновляется после цикла, он только обновляет метку с результатом второго/конечного цикла. Как я могу получить комбинацию результата от всех итераций цикла? Любая помощь будет оценена по достоинству. СпасибоSwift - Как получить все вхождения диапазона?
func findLetter(displayedWord toSearchin: String, userInput toSearchFor: String) {
let ranges: [NSRange]
var labelUpdate = String()
do {
let regex = try NSRegularExpression(pattern: toSearchFor, options: [])
let displayedWord = toSearchin as NSString
let rangeOfSearch = NSMakeRange(0, displayedWord.length)
ranges = regex.matches(in: toSearchin, range: rangeOfSearch).map {$0.range}
let nsStringlabel = wordLabel.text as NSString?
for range in ranges {
labelUpdate = (nsStringlabel?.replacingCharacters(in: range, with: toSearchFor))!
print(labelUpdate)
//the word is lavenders, so this prints:
//___e_____
//______e__
// I want:
//___e__e__
}
DispatchQueue.main.async(execute: {
self.wordLabel.text = labelUpdate
})
}
catch {
ranges = []
}
}
В вашем цикле 'for range in range' вы всегда меняете * оригинал *' nsStringlabel' ... –