【发布时间】:2016-06-16 14:43:45
【问题描述】:
我有以下表格中的电话号码:
(+39) 0765 87...
+41 (0)33 - 675 ...
其含义当然是在拨打本地电话时,在第一种情况下,在拨打国际电话时去除括号中的部分。 如果我将任何一个传递给 NSURL(string:) 我得到零。如何获得正确的行为?
【问题讨论】:
我有以下表格中的电话号码:
(+39) 0765 87...
+41 (0)33 - 675 ...
其含义当然是在拨打本地电话时,在第一种情况下,在拨打国际电话时去除括号中的部分。 如果我将任何一个传递给 NSURL(string:) 我得到零。如何获得正确的行为?
【问题讨论】:
我的猜测是首先删除所有出现的(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: "")
【讨论】:
事实上我暂时做到了:
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。
【讨论】: