Вы можете попробовать Split
строку в деталях, а затем заменить пустые записи пробелами, используя Select
(для этого требуется using System.Linq;
) и Join
записей назад
var str = "A;B;;;;C";
var parts = str.Split(';').Select(p => string.IsNullOrEmpty(p) ? " " : p);
var result = string.Join(";", parts);
Результатом будет следующий A;B; ; ; ;C
Результат сравнения по сравнению с кодом OP и решением Regex
:
![enter image description here](https://i.stack.imgur.com/z3pNb.png)
Какое четкое и элегантное решение зависит от вас. Контрольный код для справки ниже
[SimpleJob]
public class Benchmark
{
string input= "A;B;;;;C";
[Benchmark]
public string SplitJoinTest()
{
var parts = input.Split(';').Select(p => string.IsNullOrEmpty(p) ? " " : p);
return string.Join(";", parts);
}
[Benchmark]
public string DoubleReplaceTest()
{
return input.Replace(";;", "; ;").Replace(";;", "; ;");
}
[Benchmark]
public string RegexTest()
{
return Regex.Replace(input, ";(?=;)", "; ");
}
}