2015-08-24 3 views
1

Я хочу split a строка в C#. Он должен split на основе текста в строке. Как у меня есть строка "41sugar1100", я хочу, чтобы split на базе text в нем "sugar". Как я могу это сделать?Как разбить строку с не номерами в качестве разделителя?

ПРИМЕЧАНИЕ: Без передачи "sugar" непосредственно в качестве delimiter. Поскольку текст может быть изменен в следующей итерации. Когда он находит текст в строке, он должен разбиваться на основе этого текста.

+0

вы хотите найти «сахар» в строках? только это конкретное слово? – Slashy

+0

используйте регулярное выражение split –

+0

@Thomas любой код для этого – user3772251

ответ

10

Использование Regex.Split:

string input = "44sugar1100"; 
string pattern = "[a-zA-Z]+";   // Split on any group of letters 

string[] substrings = Regex.Split(input, pattern); 
foreach (string match in substrings) 
{ 
    Console.WriteLine("'{0}'", match); 
} 
+0

Дорогой он возвращает пустую строку – user3772251

+0

короткий и сладкий путь :) – JSHunjan

+0

@Thomas спасибо! – user3772251

-3
string text = "41sugar1100"; 
string[] array = text.Split('sugar'); 
+1

'Без пропуска« сахара »непосредственно в качестве разделителя' –

+0

вы должны сначала прочитать вопрос – user3772251

+3

Это также не компилируется, потому что' 'sugar'' а не 'char' –

0

**** Использование обугленного [] массив для разделения строки из строки ****

string s = "44sugar1100"; 
     char[] c = new char[] { 's', 'u', 'g', 'a', 'r' }; 
     string[] s1 = s.Split(c,StringSplitOptions.RemoveEmptyEntries); 
     string s2 = s1.ToString(); 
0
Regex regex = new Regex(@"(?<firstNumber>\d+)(?<word>[^\d]+)+(?<secondNumber>\d+)", RegexOptions.CultureInvariant); 

string s = "41sugar1100"; 
Match match = regex.Match(s); 

     if (match.Success) 
     { 
      string firstNumber = match.Groups["firstNumber"].Value; 
      string word = match.Groups["word"].Value; 
      string secondNumber = match.Groups["secondNumber"].Value; 
     } 
0
char[] array = "41sugar1100".ToCharArray(); 
StringBuilder sb = new StringBuilder(); 

// Append letters and special char '#' when original char is a number to split later 
foreach (char c in array) 
    sb.Append(Char.IsNumber(c) ? c : '#'); 

// Split on special char '#' and remove empty string items 
string[] items = sb.ToString().Split('#').Where(s => s != string.Empty).ToArray(); 

foreach (string item in items) 
    Console.WriteLine(item); 

// Output: 
// 41 
// 1100