2015-02-15 6 views
-5

Я пытаюсь разбить строку на несколько разметчиков.Разделить строку несколькими разделителями с сохранением разделителей

Я хочу оставить разделители в массиве ..

Delimeters = ["'", "-", " ", "."]; 

Например:

input = Mr. Olive n-th indices - al al's k-2 

output = ["Mr", ".", " ", "Olive", " ", "n", "-", "th", " ", "indices", 
      " ", "-", " ", "al", " ", "al", "'", "s", " ", "k", "-", "2"] 

Я знаю, что что-то подобное будет разделить его без сохранения разделителей:

String[] tokens = input.split("'|-|\\.| "); 

Любая помощь оценена!

ответ

2

String.Split не поддерживает that.but вы можете написать простой метод, который делает:

public static string[] SplitWithDelimiters(this string source, params char[] delimiters) 
{ 
    var temp = new List<char>(); 
    var parts = new List<string>() 
    foreach(var c in source) 
    { 
     if(delimiters.Contains(c)) 
     { 
      if(temp.Any()) 
      { 
        parts.Add(new string(temp.ToArray())); 
        temp.Clear(); 
      } 
      parts.Add(c.ToString()); 
     } 
     else 
     { 
      temp.Add(c); 
     } 
    } 

    return parts.ToArray(); 
} 
Смежные вопросы