我正在开发一个聊天应用程序。用户需要使用大学电子邮件地址注册。
我的应用程序将严重依赖于使用UnivID
(大学ID)划分用户,这将是'@'
符号以及电子邮件域。例如,如果用户使用以下任一电子邮件地址注册:jsmith@mail.havard.edu, jsmith@havard.edu, or jsmith@student.havard.edu. The UnivID = '@havard.edu'
我对编码很陌生,所以如果这很容易实现,我希望不要侮辱你的情报。
干杯
答案 0 :(得分:0)
我认为你真的想要在&符之后的一切。如果是这种情况,则此代码将起作用。
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
答案 1 :(得分:0)
这是我创建的一种算法,用于从电子邮件地址解析域和扩展名。我使用了最常见的域后缀的硬编码列表,以帮助确保我不会仅返回电子邮件的后缀部分(如果它具有两部分的域后缀),例如“ 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
}
答案 2 :(得分:0)
适用于所有输入的代码
state, fA, fB