@Sleytar

Как найти индекс повторяющегося элемента в List?

Стоит задача:
из заданной строки удалить все лишние (если несколько подряд) пробелы.
5ecfcd643cc01007999770.png
В моем коде при каждом проходе он дает индекс первого вхождения указанного элемента, а нужен индекс именно текущего.

Вопрос простой, но начал я изучать программирование совсем недавно. Пока не нашел решения.

Заранее благодарен.
  • Вопрос задан
  • 152 просмотра
Решения вопроса 2
edward_freedom
@edward_freedom
Попробуй так
Regex.Replace(str, "[ ]+", " ")

Второй вариант для твоих начальных знаний
public class Word
    {
        public Word(int index)
        {
            Index = index;
        }

        public int Index { get; set; }
    }


var text = "Мама    мыла  папу + big            space!";
            const char findWord = ' ';
            var wordsDictionary = new List<List<Word>>();

            var count = 0;
            var words = new List<Word>();
            for (var index = 0; index < text.Length; index++)
            {
                var word = text[index];
                if (word == findWord)
                {
                    words.Add(new Word(index));
                    count++;
                }
                else if(count > 0 && word != findWord)
                {
                    wordsDictionary.Add(new List<Word>(words));
                    words.Clear();
                    count = 0;
                   
                }
            }

            wordsDictionary.Reverse();

            foreach (var lettersList in wordsDictionary)
            {
                lettersList.Reverse();
                text = lettersList.Skip(1).Aggregate(text, (current, letter) => current.Remove(letter.Index, 1));
            }

            MessageBox.Show(text);
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
В IndexOf можно передать параметр начала, в вашем случае продолжения отсчёта.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы