Попробуйте это.
Сначала вы разбиваете строку в текстовом поле на части, основанные на ','. Затем мы очищаем feedbackEmailsArray
и затем добавляем электронные письма обратно в feedbackEmailsArray
validateEmail
, чтобы проверить, является ли текущая строка действительным письмом или нет, если это действительное письмо, оно будет добавлено в массив. validateEmail
можно сделать глобальной функцией или функцией c, если вы хотите использовать ее в любом месте программы.
func validateEmail(email:String) -> Bool {
let emailFormat = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}"
let emailPredicate = NSPredicate(format:"SELF MATCHES %@", emailFormat)
return emailPredicate.evaluate(with: email)
}
var emailIds = yourtextfield.text
var emailIdsArr = emailIds.split(separator: ",")
feedbackEmailsArray.removeAll()
for i in(0..<emailIdsArr.count) where emailIdsArr.indices.contains(i)
{
if validateEmail(email:emailIdsArr[i]) == true
{ feedbackEmailsArray.append(emailIdsArr[i]) }
}
Пояснение : @testname The validateEmail
Функция проверяет, есть ли введенный вами текст в правильном формате или нет, то есть 'abc@abc.com'. Теперь, каждый раз, когда вы возвращаетесь в это поле электронной почты, переменная emailIds
будет получать всю эту строку (abc@abc.com,bcd@bcd.com,asd@a). В этой строке asd@a не является действительным адресом электронной почты. Теперь emailIDs.split
будет разбивать строку в переменной emailIds
на основе числа на символе ,
. Они хранятся в emailIdsArr
как emailIdArr[0],emailIdArr[1],emailIdArr[2]...
. Для l oop получает общее количество индексов в emailIdArr
с помощью emailIdArr.count. where emailIdsArr.indices.contains(i)
- это простая проверка, чтобы проверить, является ли индекс действительным. Просто чтобы сделать это доказательством sh (было добавлено @iOSDev в мой ответ).
Теперь вызывается validateEmail
, и мы передаем аргумент в виде строки с индексом emailIdsArr[i]
(например, i = 5, затем index = 5, поэтому validateEmail (email:5@5.com) вернет true, поскольку он имеет формат emailId)
validateEmail
- логическая функция, которая возвращает true, если строка имеет формат emailID, и возвращает false если это не так.
Так что, если validateEmail
вернет true, это электронное письмо будет добавлено к feedbackEmailsArray
.
Так как мы используем append, и число emailIds можно изменить в любое время, мы должны очищать весь массив каждый раз, когда вызывается вся эта функция, поэтому feedbackEmailsArray.removeAll()
помещается снаружи и выше для -l oop.