Разделение строки, на подстроки с сохранением символа разделителя
Сама по себе задача простая, разделил а потом в разделенную подстроку добавить символ разделения.
Но нет.
Необходимо разделить большую строку, именно что с сохранением символа разделителя в подстроке, нельзя создавать новую строку !
Пытался разделять и через string.split, и через Regex.Split, но результат один и тот же, символ разделителя удаляется.
Пробовал такие варианты:
var str = "hello=world=";
foreach (var subStr in str.Split('='))
Console.WriteLine(subStr);
foreach (var subStr in Regex.Split(str, "="))
Console.WriteLine(subStr);
foreach (var subStr in Regex.Split(str, @"(\=)"))
Console.WriteLine(subStr);
Но ни один из них не подходит, их консольные выводы:
hello
world
hello
world
hello
=
world
=
Результат что я ожидаю:
hello=
world=
Ответы (2 шт):
Если =
в строке заведомо есть и все строки им кончаются, то просто делаете вместо сплита нон-гриди матч любой строки и в конце =
:
foreach (var subStr in Regex.Matches(str, @".*?="))
Console.WriteLine(subStr);
Вывод:
hello=
world=
А если все-таки строка имеет произвольный вид, то можно вот так:
string separator = Regex.Escape("=");
string[] strSplit = Regex.Split(s, @$"(?<={separator})");
Если в конце строки находится разделитель, то просто убираем из результата последнюю пустую строку.