首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪个NSCharacterSet描述在tel: URL中有效的字符?

哪个NSCharacterSet描述在tel: URL中有效的字符?
EN

Stack Overflow用户
提问于 2016-03-09 10:57:48
回答 1查看 324关注 0票数 2

接受一个NSURLString初始化程序是可失败的,文档中说:

如果URL字符串格式错误,则返回零。

试图使用NSURL(string: "tel://+49 00 00 00 00 00")构造URL返回为零。

stringByAddingPercentEscapesUsingEncoding(_:)和朋友们在iOS 9中反对stringByAddingPercentEncodingWithAllowedCharacters(_:),因为stringByAddingPercentEncodingWithAllowedCharacters(_:)需要一个NSCharacterSet。哪个NSCharacterSet描述了tel: URL中有效的字符?

都不是

  • URLFragmentAllowedCharacterSet()
  • URLHostAllowedCharacterSet()
  • URLPasswordAllowedCharacterSet()
  • URLPathAllowedCharacterSet()
  • URLQueryAllowedCharacterSet()
  • URLUserAllowedCharacterSet()

..。似乎是相关的

EN

回答 1

Stack Overflow用户

发布于 2016-03-09 11:36:50

您可以将NSDataDetector类从字符串转到grep电话号码。下一步,从检测到的数字中删除所有不必要的字符,并创建NSURL。

代码语言:javascript
复制
  func getPhoneNumber(string: String) -> String? {
        if let detector = try? NSDataDetector(types: NSTextCheckingType.PhoneNumber.rawValue) {
            let matches = detector.matchesInString(string, options: [], range: NSMakeRange(0, string.characters.count))

            if let string = matches.flatMap({ return $0.phoneNumber}).first {
                let number = convertStringToNumber(string)
                return number
            }
        }


        return nil
    }

    func convertStringToNumber(var str: String) -> String {
        let set = NSMutableCharacterSet()
        set.formUnionWithCharacterSet(NSCharacterSet.whitespaceCharacterSet())
        set.formUnionWithCharacterSet(NSCharacterSet.symbolCharacterSet())
        set.formUnionWithCharacterSet(NSCharacterSet.punctuationCharacterSet())

        str = str.componentsSeparatedByCharactersInSet(set).reduce(String(), combine: +)

        return str
    }

示例:

代码语言:javascript
复制
 let possibleNumber = "+49 00 00 00 00 00"

 if let number = getPhoneNumber(possibleNumber), let url = NSURL(string: "tel://\(number)") {
     print(url.absoluteString)
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35889628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档