Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 57

Поиск и удаление из строки слова, которое встречается дважды

24.12.2013, 23:04. Показов 2641. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста!!! Дана строка, например: "Сейчас лежит белый белый снег". В этой строке нужно найти и удалить одно одинаковое слово. Например, белый. Вот я написал цикл, он находит одинаковое слово, но удаляет это слово и весь текст, что стоит после него. Помогите пожалуйста найти ошибку.
Код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
s="Сейчас лежит белый [B]белый[/B] снег "; 
                s3=s;
                while (p==1)
                {
                    m=s3.IndexOf(" ");
                    s1 = s3.Substring(0, m);
                    s2 = s3.Substring(m + 1);
                    z=s2.IndexOf(s1);
                    if (z == 0)
                    {
                        x = s.IndexOf(s2);
                    }
                    else s3 = s2;
                    richTextBox1.Text = s3; 
                }
                richTextBox1.SelectedText = "";
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.12.2013, 23:04
Ответы с готовыми решениями:

Поиск слова которое встречается чаще всех
Есть строка определить какое слово встречается в строке чаще всего и вывести его. Помогите пожалуйста очень надо. Заранее благодарен.

Дана строка, состоящая из слов. Удалить из строки все слова, в которых хотя бы одна буква встречается дважды
Delphi 6. Нужно с визуализацией, вывод результата в форму.

Из вводимых строк найти слова, у которых заданный символ встречается дважды - Не работает scanf
#include <stdio.h> #include <conio.h> #include <string.h> #include <ctype.h> #define N 80 #define M 6 int main (void) ...

14
 Аватар для Веселый
87 / 88 / 48
Регистрация: 12.10.2013
Сообщений: 1,103
25.12.2013, 01:42
Скопируй код без сокращений . Не понятно где он размещен .Если так , то выдает много ошибок.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private void textBox1_TextChanged(object sender, EventArgs e)
        {
            string s, s3, s2, z, s1, x, richTextBox1,m;
            int p;
            s = "Сейчас лежит белый [B]белый[/B] снег ";
            s3 = s;
            while (p == 1)
            {
                m = s3.IndexOf(" ");
                s1 = s3.Substring(0, m);
                s2 = s3.Substring(m + 1);
                z = s2.IndexOf(s1);
                if (z == 0)
                {
                    x = s.IndexOf(s2);
                }
                else s3 = s2;
                richTextBox1.Text = s3;
            }
            richTextBox1.SelectedText = "";
        }
0
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 4
Регистрация: 18.05.2013
Сообщений: 220
25.12.2013, 03:34
C#
1
2
3
4
string s = "Сейчас лежит белый белый снег.";
string[] q = s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
q = q.Distinct().ToArray();
foreach (var z in q) Console.Write(z + " ");
Можно и так:

C#
1
2
3
            string s = "Сейчас лежит белый белый снег.";
string[] q = s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Distinct().ToArray();
foreach (var z in q) Console.Write(z + " ");
0
10 / 25 / 9
Регистрация: 08.12.2013
Сообщений: 115
25.12.2013, 11:51
Цитата Сообщение от Бендерродригез Посмотреть сообщение
2
3
string s = "Сейчас лежит белый белый снег.";
string[] q = s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).D istinct().ToArray();
foreach (var z in q) Console.Write(z + " ");
C#
1
Console.Write(String.Join(" ", s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Distinct()));
1
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 4
Регистрация: 18.05.2013
Сообщений: 220
25.12.2013, 11:55
Цитата Сообщение от Hsert Посмотреть сообщение
C#
1
Console.Write(String.Join(" ", s.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Distinct()));
Буду знать.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
25.12.2013, 11:59
Любители Split'ов могут проверить свои решения на "Сейчас лежит белый снег снег."
0
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 4
Регистрация: 18.05.2013
Сообщений: 220
25.12.2013, 12:06
Цитата Сообщение от pycture Посмотреть сообщение
Любители Split'ов могут проверить свои решения на "Сейчас лежит белый снег снег."
C#
1
string[] q = s.Split(new char[] { ' ', '.' }, StringSplitOptions.RemoveEmptyEntries);
Лечится легко и просто.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
25.12.2013, 12:15
Цитата Сообщение от Бендерродригез Посмотреть сообщение
Лечится легко и просто.
Ну ну. И каков же результат лечения. Пациент (точка что в конце) не выжил?
0
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 4
Регистрация: 18.05.2013
Сообщений: 220
25.12.2013, 12:58
Цитата Сообщение от pycture Посмотреть сообщение
Ну ну. И каков же результат лечения. Пациент (точка что в конце) не выжил?
Добавить можно. Или это так сложно?
Так предложи что-нибудь своё, крайне простое и идеальное для всех возможных случаев, а я и поучусь у тебя.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
25.12.2013, 13:11
Цитата Сообщение от Бендерродригез Посмотреть сообщение
Добавить можно. Или это так сложно?
А ты добавь и проверь. Вот на этом "Сейчас лежит белый снег снег, который выпал вчера."
0
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 4
Регистрация: 18.05.2013
Сообщений: 220
25.12.2013, 13:15
Цитата Сообщение от pycture Посмотреть сообщение
А ты добавь и проверь. Вот на этом "Сейчас лежит белый снег снег, который выпал вчера."
Во-первых, задача была убрать дубликаты слов, а не сохранить пунктуацию. Здесь даже проверка на слова в разном регистре отсутствует.
Во-вторых, ты так и не предложил своего варианта, кристально чистого и быстрого, как pure С.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
25.12.2013, 15:11
Цитата Сообщение от Бендерродригез Посмотреть сообщение
Во-первых, задача была убрать дубликаты слов, а не сохранить пунктуацию.
Задачи удалить пунктуацию не было, это значит что удаляться должен только дубликат, а не все что заблагорассудиться.
Цитата Сообщение от Бендерродригез Посмотреть сообщение
Во-вторых, ты так и не предложил своего варианта, кристально чистого и быстрого, как pure С.
Т.е. все правильные решения должны быть быстрые и красивые? Прям мир розовых пони, а не программирование.
Ну да ладно. Если одинаковые слова разделены только пробелами, то все решается очень просто.
C#
1
2
3
//
            var s = "Сейчас лежит белый снег  снег, который выпал вчера.";
            s = Regex.Replace(s, @"(\w+)\W+\1", @"$1");
Если же между словами есть другие, то http://ideone.com/kUx7xg
На С# сам переводи, ты ж хотел чемуниь научиться
0
0 / 0 / 0
Регистрация: 07.05.2012
Сообщений: 57
25.12.2013, 17:48  [ТС]
Вот код без сокращений:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 private void richTextBox1_KeyUp(object sender, KeyEventArgs e)
        {
            int k;
            k = 0;
            if (e.KeyCode == Keys.F11) 
            {
                k = 1;
                k = richTextBox1.SelectionStart;
                int p, m, z, x,d;
                string s, s1, s2, s3;
                p = 1;
                s="Сейчас лежит белый белый снег"; 
                s3=s;
                while (p==1)
                {
                    m=s3.IndexOf(" ");
                    s1 = s3.Substring(0, m);
                    s2 = s3.Substring(m + 1);
                    z=s2.IndexOf(s1);
                    if (z == 0)
                    {
                        x = s.IndexOf(s2);   
                    }
                    else s3 = s2;
                    richTextBox1.Text = s3;
                }
                richTextBox1.SelectedText = "";
Добавлено через 3 минуты
Ошибки выдаёт. А мой цикл совсем неправильный?
0
Сгибальщик
 Аватар для Бендерродригез
42 / 42 / 4
Регистрация: 18.05.2013
Сообщений: 220
25.12.2013, 21:38
Цитата Сообщение от pycture Посмотреть сообщение
Задачи удалить пунктуацию не было, это значит что удаляться должен только дубликат, а не все что заблагорассудиться.Т.е. все правильные решения должны быть быстрые и красивые? Прям мир розовых пони, а не программирование.
Ну да ладно. Если одинаковые слова разделены только пробелами, то все решается очень просто.
C#
1
2
3
//
            var s = "Сейчас лежит белый снег  снег, который выпал вчера.";
            s = Regex.Replace(s, @"(\w+)\W+\1", @"$1");
Если же между словами есть другие, то http://ideone.com/kUx7xg
На С# сам переводи, ты ж хотел чемуниь научиться
Пунктуации в изначальном примере вообще не было.

А до регулярок я ещё не дошёл, так что всему своё время. Если ты предпочитаешь изучать язык, хватая то оттуда, то отсюда по куску, то это уже не моя проблема.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
26.12.2013, 01:19
Цитата Сообщение от Бендерродригез Посмотреть сообщение
Пунктуации в изначальном примере вообще не было.
Ага.
- Как поделить число на 10?
- Ну например так (int)d / 10.
- О-о-о! А число 10.11?
- А после запятой в начальном изначальном примере вообще не было!
Так что ли?
Ну да фиг с ней с пунктуацией. Кол-во пробелов между словами твой вариант сохраняет? Нет? Тоже в задании не было? С таки подходом правильное решение будет вернуть "", дубликат удален, а сохранять другие слова в задании не было.
Цитата Сообщение от Бендерродригез Посмотреть сообщение
А до регулярок я ещё не дошёл, так что всему своё время. Если ты предпочитаешь изучать язык, хватая то оттуда, то отсюда по куску, то это уже не моя проблема.
Как раз проблема твоя. Ты даже не знаешь общие для программирования технологии, которые к C# имеют отношение постольку поскольку (и регулярки, как частный пример), а уже размахиваешь весьма специфичным для C# Linq'ом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.12.2013, 01:19
Помогаю со студенческими работами здесь

Из заданного текстового файла удалить все слова, у которых первая буква встречается еще дважды.
Помогите написать программку: Из заданного текстового файла удалить все слова, у которых первая буква встречается еще дважды. Разбивка по...

Дано предложение. Выведите на экран те слова в которых буква "о" встречается дважды.
Дано предложение. Выведите на экран те слова в которых буква "о" встречается дважды. Помогите пожалуйста!!!!!!!!у меня почему-то не...

Среди слов первой строки найти самое короткое, которое не встречается во второй строке
Здравствуйте! Задача такая: Среди слов первой строки найти самое короткое, которое не встречается во второй строке. Поиск минимального...

Строки. Напишите функцию,возвращающую количество раз, которое одна строка встречается в другой
Пожалуйста, помогите!Все ниже перечисленные задачи нужно решить к завтрашнему дню на Паскале!Задачи нужно решить без массивов с помощью...

Определить число, которое встречается во встречается во всех строках матрицы
Дана матрица m*n. Каждая строка матрицы упорядочена по неубыванию. Определить число, которое встречается во встречается во всех строках...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru