Я предлагаю решение для разделения и восстановления строк:
var result = string.Join(
",",
s.Split(',') // split with commas
.Select(x => !x.StartsWith("[") && !x.EndsWith("]") ? $"[{x}]" : x ) // add [ ] to items not starting and ending with [ ]
);
См. C # демо :
var strs = new List<string> { "[foo],[bar],baz", "[foo],bar,[baz]", "foo,bar,baz" };
foreach (var s in strs)
{
var result = string.Join(",", s.Split(',').Select(x => !x.StartsWith("[") && !x.EndsWith("]") ? $"[{x}]" : x ));
Console.WriteLine(result);
}
Вывод:
[foo],[bar],[baz]
[foo],[bar],[baz]
[foo],[bar],[baz]
Обновлено
Поскольку могут быть элементы с [
в начале или ]
в конце, вы можете использовать
var result = string.Join(
",",
s.Split(',')
.Select(x => !x.StartsWith("[") || !x.EndsWith("]") ?
$"[{Regex.Replace(x, @"^\[|]$", "")}]" : x
)
);
См. это C # демо .Результат:
[foo],[bar],[baz],[test]
[foo],[bar],[baz],[test]
[foo],[bar],[baz]
Обратите внимание, что Regex.Replace(x, @"^\[|]$", "")
удаляет [
в начале и ]
в конце строки.