【问题标题】:Dialing phone dependently on location in Swift根据 Swift 中的位置拨打电话
【发布时间】:2016-06-16 14:43:45
【问题描述】:

我有以下表格中的电话号码:

(+39) 0765 87...

+41 (0)33 - 675 ...

其含义当然是在拨打本地电话时,在第一种情况下,在拨打国际电话时去除括号中的部分。 如果我将任何一个传递给 NSURL(string:) 我得到零。如何获得正确的行为?

【问题讨论】:

    标签: swift nsurl tel


    【解决方案1】:

    我的猜测是首先删除所有出现的(0),然后删除所有括号和) 的尾随零。即使您拨打本地号码,也可以使用国家前缀。

    类似这样的东西,但你可以用正则表达式来写。

    var number = "(+39) 0765 87"
    
    number = number.stringByReplacingOccurrencesOfString(" ", withString: "")
    number = number.stringByReplacingOccurrencesOfString("(0)", withString: "")
    number = number.stringByReplacingOccurrencesOfString("(", withString: "")
    number = number.stringByReplacingOccurrencesOfString(")0", withString: "")
    number = number.stringByReplacingOccurrencesOfString(")", withString: "")
    

    【讨论】:

    • 其实我暂时做了:
    • 我确实做到了。然而,它不适用于意向电话,特别是对于英格兰,甚至不适用于本地电话。
    【解决方案2】:

    事实上我暂时做到了:

    let myStringArr = phoneValueLabel.text!.componentsSeparatedByString(")")
    var strippedStr:String!
    if myStringArr.count==2{
        strippedStr = myStringArr[1]
    } else {
        strippedStr = phoneValueLabel.text!
    }
    let trimmedString = strippedStr.stringByReplacingOccurrencesOfString(" ", withString: "")
    let phoneLink="tel://\(trimmedString)"
    let url=NSURL(string:phoneLink)
    print("phoneLink=\(phoneLink) url=\(url)")
    if (url != nil){
        phoneValueLabel.addLink(url: url!, atRange:range)
    }
    

    为了去除所有字符,请使用右括号。不过,这当然适用于本地电话。我正在寻找的是一种根据呼叫是本地呼叫还是国际呼叫插入正确代码的解决方案。例如:

    033 675... 如果电话来自英格兰,例如: 如果电话来自意大利,请拨打 0041 33 675。

    就此而言,我的解决方案不适用于英格兰,因为在右括号之前修剪所有字符也会修剪必要的 0。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 2014-08-06
      相关资源
      最近更新 更多