2016-03-03 5 views
1

У меня есть телефонные номера в виде:набор номера телефона в зависимости от местоположения в Swift

(+39) 0765 87 ...

+41 (0) 33 - 675 ...

, смысл которого, разумеется, заключается в том, чтобы выполнить часть в скобках в первом случае при выполнении локального вызова, в последнем при выполнении международного вызова. Если я передаю либо NSURL (строка :), я получаю нуль. Как можно получить правильное поведение?

ответ

0

Мое предположение заключается в том, чтобы сначала удалить все вхождения (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: "") 
+0

На самом деле я временно сделал: –

+0

То, что я сделал, на самом деле. Тем не менее, это не работает для звонков по намерениям и специально для Англии даже для местных звонков. –

0

На самом деле я временно сделал:

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.