Обновление для Swift 3:
let letters = CharacterSet.letters
let digits = CharacterSet.decimalDigits
var letterCount = 0
var digitCount = 0
for uni in phrase.unicodeScalars {
if letters.contains(uni) {
letterCount += 1
} else if digits.contains(uni) {
digitCount += 1
}
}
(Предыдущий ответ для старых версий Swift)
Возможное решение Swift:
var letterCounter = 0
var digitCount = 0
let phrase = "The final score was 32-31!"
for tempChar in phrase.unicodeScalars {
if tempChar.isAlpha() {
letterCounter++
} else if tempChar.isDigit() {
digitCount++
}
}
Обновление: Вышеупомянутое решение работает только с символами в наборе символов ASCII, то есть не распознает буквы Ä, é или ø в виде букв. Следующее альтернативное решение использует NSCharacterSet
из фреймворческой структуры, которая может тестировать символы на основе их классов символов Unicode:
let letters = NSCharacterSet.letterCharacterSet()
let digits = NSCharacterSet.decimalDigitCharacterSet()
var letterCount = 0
var digitCount = 0
for uni in phrase.unicodeScalars {
if letters.longCharacterIsMember(uni.value) {
letterCount++
} else if digits.longCharacterIsMember(uni.value) {
digitCount++
}
}
Обновление 2: Начиная с Xcode 6 beta 4, первое решение больше не работает, поскольку методы isAlpha()
и связанные с ним (ASCII-only) были удалены из Swift. Второе решение все еще работает.
Возможно ли достичь этого сценария? Похоже, что в UWP невозможно зафиксировать событие «Нажата кнопка X».
blockquote>Существует событие CloseRequested класса SystemNavigationManagerPreview . Это событие происходит, когда пользователь вызывает системную кнопку для закрытия (кнопка «x» в углу строки заголовка приложения).
Обратите внимание: если вы хотите использовать это событие, вам необходимо добавить ограниченную возможность
confirmAppClose
в файл Package.appxmanifest.