2017-01-31 3 views
-10

Мне нужна помощь. У меня есть строкаРазделить строку C#

string source = "Mobile: +49 (123) 45678Telephone: +49 (234) 567890Fax: +49 (345) 34234234"; 

И я хочу, чтобы разделить в этом:

Mobile: +49 (123) 45678 
Telephone: +49 (234) 567890 
Fax: +49 (345) 34234234 

Спасибо за вашу поддержку BR Томас

+4

Добро пожаловать в StackOverflow! что ты уже испробовал? Где вы потерпели неудачу? –

+1

И? Почему ты не можешь? Вы что-то пробовали? Найти индекс «Телефон» или «Факс» легко, даже если это не самое быстрое решение. –

+0

Привет, Томас ... Обычно при попытке решения 1 сопровождается результатами и вашей текущей проблемой. thanks – Wheels73

ответ

1

Вы можете использовать Regex.Matches():

string source = "Mobile: +49 (123) 45678Telephone: +49 (234) 567890Fax: +49 (345) 34234234"; 

string[] phones = Regex 
       .Matches(source, "[A-Za-z]+: \\+([0-9)(])+") 
       .Cast<Match>() 
       .Select(i => i.ToString()) 
       .ToArray(); 

OR

Вы можете использовать IndexOf():

string source = "Mobile: +49 (123) 45678Telephone: +49 (234) 567890Fax: +49 (345) 34234234"; 

var telephoneIndex = source.IndexOf("Telephone", StringComparison.InvariantCulture); 
var faxIndex = source.IndexOf("Fax", StringComparison.InvariantCulture); 

string[] phones = 
{ 
    source.Substring(0, telephoneIndex - 1), 
    source.Substring(telephoneIndex, faxIndex - 1), 
    source.Substring(faxIndex, source.Length - faxIndex) 
}; 
+0

Wow - очень быстрая реакция. Спасибо, Рома - оба решения работают. Большое большое спасибо. – Thomas

0

только потому, что мне скучно

Эта функция возвращает словарь трех телефонных номеров.

Dictionary<String, String> ParseTelephones(string source) 
{ 
    var tags = new[] {"Telephone:","Fax:","Mobile:"}; 
    var dict = new Dictionary<String, String>(); 

    tags.Any(a => { source = source.Replace(a, "|" + a); return true; }); 

    source.Split("|") 
      .Skip(1) 
      .Select(a => a.Split(":").Trim()) 
      .Any(a => { dict.Add(a[0], a[1]); return true;}) 
      .ToList(); 

    return dict; 
} 
+0

Спасибо за ваше время ;-) Я уже знаю, что есть много решений – Thomas

Смежные вопросы