Во всех словах предложения, отличных от последнего слова, удалить все предыдущие вхождения последней буквы - C#
Формулировка задачи:
Задание.
Дана последовательность, содержащая слова, в каждом из которых от 1 до 8 строчных (маленьких) латинских букв, разделенные точкой с запятой, после последнего слова - точка.
Во всех словах предложения, отличных от последнего слова, удалить все предыдущие вхождения последней буквы. Например, исходное предложение: «fsdf;iuuy;qwerwq;yjnmkj.», результат: «sdf;iuuy;werwq;ynmkj.».
нужно заменить эти
строки одной с использованием IndexOf. Кто подскажет как это сделать?
static string obrabotka(string str){
//записываем строку в массив строк без разделителей
string[] mas = str.Split(';', '.');
str = "";
for (int i = 0; i < mas.Length; i++)
//по условию длина слова от 1 до 8 символов
if (mas[i].Length > 1 && mas[i].Length < 8)
{
//цикл по каждому символу слова за исключением последней
for (int k = 0; k < mas[i].Length - 1; k++)
{
//если последняя буква совпадает с найденной
if (mas[i][mas[i].Length - 1] == mas[i][k])
{
// удаляем найденную букву
mas[i] = mas[i].Remove(k, 1);
}
}
//после каждого проверенного слова ставим точку с запятой
str = str + mas[i] + ";";
}
//удаляем последнюю точку с запятой и добавляем в конец точку
str = str.Remove(str.Length - 1) + '.';
//возвращаем обработанную строку
return str;
} if (mas[i][mas[i].Length - 1] == mas[i][k])
mas[i] = mas[i].Remove(k, 1);Решение задачи: «Во всех словах предложения, отличных от последнего слова, удалить все предыдущие вхождения последней буквы»
textual
Листинг программы
mas[i] = mas[i].Remove(mas[i].IndexOf(mas[i][mas[i].Length - 1], 0, mas[i].Length - 1), 1);