2013-08-18 3 views
-2

Я хочу создать метод, который получит строку (желательно текст текстового блока), и она будет идентифицировать и выделять любые номера телефонов в строке. Цель состоит в том, чтобы позволить пользователю нажимать на любой номер и напрямую вызывать или переписывать его (с помощью соответствующей пусковой установки).Извлечь номер телефона из текста

Как я могу это решить? Есть идеи? Заранее спасибо!

+0

Хотите решение для извлечения телефонных номеров или позволяет пользователю нажать номер и позвонить/текст? –

+0

http://stackoverflow.com/questions/1559753/regular-expression-to-match-us-phone-numbers Использование Regex, как это может вам помочь. –

+0

http://stackoverflow.com/questions/3764814/how-to-detect-telephone-numbers-in-a-text-and-replace-them Возможное повторение. – jbaylina

ответ

0
String s = "abc055667788abc"; 
string phoneNumber; 
foreach(char c in s) 
{ 
    if(Char.isNumber(c) || c == " " || c == "+") 
    { 
     phoneNumber = phoneNumber + c; 
     minimumDigits++; 
     if(minimumDigits >= 9) 
     { 
      NumberDetected(phoneNumber); 
     } 
    } 
    else 
    { 
     minimumDigits = 0; 
    } 
} 

NumberDetected(string rawNumber) 
{ 
    int plusses = 0; 
    foreach(char c in rawNumber) 
    { 
     if(c == "+") 
     { 
      plusses++; 
     } 
    } 
    if(plusses <= 1) 
    { 
     if(rawNumber.StartsWith("+") 
     { 
      NumberDone(rawNumber); 
     } 
    } 
    else 
    { 
     MessageBox.Show("Number contained too many plusses!"); 
    } 
} 
+0

Это, кажется, самый простой подход, спасибо! – Icarus

+1

@Icarus не проблема. Сообщите нам, как вы решили проблему с нажатием на вызов :) –

+0

Это будет соответствовать «1 + 2 + 3 + 4 + 5» тоже .... – I4V

1

Чтобы сделать это, вы можете использовать Regular expression.

Пример: -

var s= new Regex(@"(\(?[0-9]{3}\)?)?\-?[0-9]{3}\-?[0-9]{4}", 
RegexOptions.IgnoreCase); //North American number 

var text = "Some Texxt"; 
MatchCollection m= s.Matches(text);