Xcode 在MyPlayder中提取电子邮件域

Xcode 在MyPlayder中提取电子邮件域,xcode,swift,email,dns,extract,Xcode,Swift,Email,Dns,Extract,我正在开发一个聊天应用程序。用户需要使用大学的电子邮件地址注册 我的应用程序将严重依赖于使用UnivID(大学ID)来划分用户,这将是“@”符号以及电子邮件域。例如,如果用户使用以下任一电子邮件地址注册:jsmith@mail.havard.edu, jsmith@havard.edu或jsmith@student.havard.edu. UnivID='@havard.edu' 我对编码是新手,所以如果这很容易实现,我希望不要侮辱你的智慧 干杯我想你真的想要符号后面的一切。如果是这种情况,那么

我正在开发一个聊天应用程序。用户需要使用大学的电子邮件地址注册

我的应用程序将严重依赖于使用
UnivID
(大学ID)来划分用户,这将是
“@”
符号以及电子邮件域。例如,如果用户使用以下任一电子邮件地址注册:
jsmith@mail.havard.edu, jsmith@havard.edu或jsmith@student.havard.edu. UnivID='@havard.edu'

我对编码是新手,所以如果这很容易实现,我希望不要侮辱你的智慧


干杯

我想你真的想要符号后面的一切。如果是这种情况,那么这段代码将起作用

let example = "jsmith@student.harvard.edu"
let univId = "@" + example.componentsSeparatedByString("@")[1]
// "@student.harvard.edu"
let example = "jsmith@student.harvard.edu"
let domain  = example.componentsSeparatedByString("@")
let parts   = domain.componentsSeparatedByString(".")
let univId  = "@" + parts[parts.count - 2] + "." + parts[parts.count - 1]
// @harvard.edu
如果您真的只需要扩展域字符串的最后两部分,那么这将起作用

let example = "jsmith@student.harvard.edu"
let univId = "@" + example.componentsSeparatedByString("@")[1]
// "@student.harvard.edu"
let example = "jsmith@student.harvard.edu"
let domain  = example.componentsSeparatedByString("@")
let parts   = domain.componentsSeparatedByString(".")
let univId  = "@" + parts[parts.count - 2] + "." + parts[parts.count - 1]
// @harvard.edu

下面是我创建的一个算法,用于从电子邮件地址解析域和扩展。我使用了一个最常见的域名后缀硬编码列表,以确保如果电子邮件有两部分域名后缀,比如“co.uk”或“ca.gov”,我不会只返回后缀部分

您只需要在用例的结果域上预先加上“@”

class func parseDomain(fromEmail email: String) -> String? {
    let suffixList = ["com", "edu", "gov", "int", "mil", "net", "org", "xyz", "biz", "info", "ai", "io", "co", "ly", "eu", "cn", "ru", "nl", "de", "uk"]

    guard let emailDomains = email.components(separatedBy: "@").last else {
        return nil
    }
    let domainParts = emailDomains.components(separatedBy: ".")

    guard domainParts.count >= 2 else {
        return nil
    }

    var domain = domainParts[domainParts.count - 2] + "." + domainParts[domainParts.count - 1]
    let secondLastComponent = domainParts[domainParts.count - 2]
    if suffixList.contains(secondLastComponent) && domainParts.count >= 3 {
        // we want to avoid returning things like co.uk, or com.au,
        // so if the 2nd last component is a common suffix, return the last 3 parts instead.
        domain = domainParts[domainParts.count - 3] + "." + domainParts[domainParts.count - 2] + "." + domainParts[domainParts.count - 1]
    }

    return domain
}
最新版本2020,Swift 5.2,XCode 11.4.1 适用于所有输入的代码

let example = "email_id@gmail.com"
let components = example.components(separatedBy: "@")
if components.count > 1 {
    let domain = components[1]
    // domain has value gmail.com
}

你的问题是什么,兄弟?嗨,对不起,我不太清楚。我希望创建一个字符串='@domain.edu',无论用户是否使用以下电子邮件注册jsmith@mail.havard.edu, jsmith@student.havard.edu或jsmith@havard.eduThanks伙计!正是我想要的。