@DeboshiR
Свободу разработчикам!!!

Как удалить текст между 2 словами?

Удаляю текст между 2 словами следующим образом:
while (text.IndexOf("ничего") != -1)
    text = text.Remove(text.IndexOf("ничего"), text.IndexOf("нет") + 9);

Но возникает ошибка "Индекс и показание счетчика должны указывать на позицию в строке.". Известно, что ошибку выбивает при второй итерации. Каким образом можно решить проблему?
  • Вопрос задан
  • 323 просмотра
Решения вопроса 1
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
public static void Main()
{
	string text = "ничего здесь нет и вообще ничего нигде нет";
	Console.WriteLine(text);
		
	int start = 0;
	string pattern1 = "ничего";
	string pattern2 = "нет";
	while(true)
	{
		int foundS1 = text.IndexOf(pattern1, start);
		if (foundS1 == -1)
			break;
		int foundS2 = text.IndexOf(pattern2, foundS1 + pattern1.Length);
		if (foundS2 == -1)
			break;
		text = text.Remove(foundS1 + pattern1.Length, foundS2 - foundS1-pattern1.Length);
		start+= pattern1.Length+pattern2.Length;
	}
	Console.WriteLine(text);
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Onito
ну например сделать проверку что text.IndexOf("нет") + 9 < text.size() и text.IndexOf("нет") != -1 добавить
text.IndexOf("ничего") - это два раза повторять не обязательно, если конечно этот код не перебирает тонну текста
Ответ написан
Комментировать
var re = new Regex(@"(.*?ничего\s+)(.*?)(нет\s*)");
var s = re.Replace("ничего здесь нет и вообще ничего нигде нет", f => f.Groups[1].Value + f.Groups[3].Value);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы