美文网首页
模式匹配

模式匹配

作者: fordring2008 | 来源:发表于2017-02-04 09:29 被阅读4次

    模式匹配特性类似于正则表达式的匹配

    // 重载 ~= ,使它接受一个 NSRegularExpression 作为模式,去匹配输入的 String

    func ~=(pattern: NSRegularExpression, input: String) -> Bool {

    return pattern.numberOfMatches(in: input,

    options: [],

    range: NSRange(location: 0, length: input.characters.count)) > 0

    }

    // 为了简便,再添加一个将字符串转换为 NSRegularExpression 的操作符

    // 定义“前位”操作符

    prefix operator ~/

    // 定义操作符

    prefix func ~/(pattern: String) throws -> NSRegularExpression  {

    do {

    return try NSRegularExpression(pattern: pattern, options: [])

    }catch _ {

    assertionFailure()

    return NSRegularExpression()

    }

    }

    let contact = ("http://onevcat.com", "onev@onevcat.com")

    let mailRegx: NSRegularExpression

    let siteRegx: NSRegularExpression

    mailRegx = try ~/"^([a-z0-9_\\.-]+)@([\\da-z\\.-]+)\\.([a-z\\.]{2,6})$"

    siteRegx = try ~/"^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?$"

    switch contact {

    case (siteRegx, mailRegx): print("同时拥有有效的网站和邮箱")  // 这里输出

    case (_, mailRegx):print("只拥有有效的邮箱")

    case (siteRegx, _):print("只拥有有效的网站")

    default:print("嘛都没有")

    }

    相关文章

      网友评论

          本文标题:模式匹配

          本文链接:https://www.haomeiwen.com/subject/uwsjittx.html