Есть два решения, о которых я могу подумать: использование Regex
или использование String
функций манипуляции.
Первый подход с регулярным выражением:
string text = "Items Item 1, Item 2 in Boxes Box 1, Box 2";
var match = Regex.Match(text, "^Items(?: ([^,]*),?)* in Boxes(?: ([^,]*),?)*$");
System.Console.WriteLine("Items:");
foreach (Capture cap in match.Groups[1].Captures)
System.Console.WriteLine(cap.Value); // -->Item1 and Item2
System.Console.WriteLine("Boxes:");
foreach (Capture cap in match.Groups[2].Captures)
System.Console.WriteLine(cap.Value); // --> Box 1 and Box 2
Решение с классическими строковыми операциями:
string text = "Items Item 1, Item 2 in Boxes Box 1, Box 2";
var allItems = text.Remove(text.IndexOf("in Boxes")).Remove(0, "Items ".Length);
var itemArray = allItems.Split(',');
var allBoyes = text.Remove(0, text.IndexOf("in Boxes")).Remove(0, "in Boxes ".Length);
var boxArray= allItems.Split(',');
Позаботьтесь о местах, оставленных здесь, вам все еще нужно .Trim()
предметы.
Что вы используете и что лучше всего подходит для вашей проблемы, зависит от обстоятельств. Я бы предпочел строковое решение, так как оно более читабельно и менее подвержено ошибкам.