Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
2 / 2 / 4
Регистрация: 13.02.2011
Сообщений: 163
1

Добавление в строку символа по условию

22.09.2014, 18:05. Показов 3164. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
        public string Addsymboldublicate(string _opentext)
        {
            for (int r = 0; r < _opentext.Length - 1; r++)
            {
                if (_opentext[r] == _opentext[r + 1])
                    _opentext = _opentext.Insert(r--, "x");
            }
            return _opentext;
        }
По идее при встрече двух одинаковых символов, он должен между ними вставлять символ x, например. есть слово tool, на выходе должно получаться toxol. Желательно если будете приводить код, то объясните суть вашего цикла, работа со строкой.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2014, 18:05
Ответы с готовыми решениями:

Добавление символа в строку
Добрый вечер. Помогите кодом. Читаю строки в файле при помощи TStringlist. И одну колонку...

Добавление символа в строку
Сделал прожку, должна добавлять пробел в строку. У меня пробел заменяет символ в строке, а должен...

Добавление символа в строку
Имеется вычисляемой поле Edit, в котором к примеру получается число в результате деления 10,5. Как...

GridView добавление символа в строку
Приветствую. Вообщем есть база и таблица GridView на странице куда она выгружается. Один из...

10
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
23.09.2014, 03:23 2
Тут нужно использовать регулярные выражения. В приведённом мною варианте в строке ищутся два одинаковых символа подряд, которые не являются цифрами или пробельными символами:
C#
1
2
3
4
5
public string Addsymboldublicate(string _opentext)
    {
        string separator = "x";
        return System.Text.RegularExpressions.Regex.Replace(_opentext, @"([^\s\d])(\1)", "${1}" + separator + "${2}", RegexOptions.IgnoreCase);
    }
0
2 / 2 / 4
Регистрация: 13.02.2011
Сообщений: 163
23.09.2014, 11:01  [ТС] 3
Логично конечно же, но сейчас приведу пример: если оказывается, что повторяющиеся буквы открытого текста образуют пару для шифрования, то между этими буквами вставляется специальная буква-заполнитель, например "х". В частности, такое слово как balloon будет преобразовано к виду ba lx lo on. Поэтому я и думаю, как сделать это циклически. И попутный вопрос, если я буду вызывать System.Text, мне все равно надо будет писать это: System.Text.RegularExpressions ?
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
23.09.2014, 11:10 4
SKyzZz, 1) этот код из balloon получит balxloxon.
2) да, необходимо указать именно System.Text.RegularExpressions
0
2 / 2 / 4
Регистрация: 13.02.2011
Сообщений: 163
23.09.2014, 11:23  [ТС] 5
1) Как раз таки логика такая, что встречая первую дублирующуюся пару он вставляет "x" тем самым сдвигая остальные буквы то есть: balloon разбивается на пары ba ll oo n* (* - пробел) после встречи первой пары получаем ba lxl oo n*, далее опять разбиваем на пары ba lx lo on, вот как должно работать перед этим методом у меня стоит вот такой метод:
C#
1
2
3
4
5
6
7
8
9
10
11
        public string Evensymbolstrings(string _opentext) // на четность строки то есть если там стоит даже abc*efg
                                                                                // то получается 7 символом и добавляется пробел для четности
        {
            int lengthopentext = _opentext.Length;
            int tempcount = lengthopentext % 2;
            if (tempcount != 0) 
            {               
                _opentext = _opentext.PadRight((lengthopentext + 1), ' ');
            }
            return _opentext;
        }
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
23.09.2014, 12:21 6
SKyzZz, меньше текста больше смысла. вам дали рабочий код, который выполняет задачу, озвученную в первом посте. он делает что-то не так как надо? так озвучьте нормально техническое задание, а то в вашей сумбурной речи не совсем понятно что требуется.
0
813 / 421 / 169
Регистрация: 08.02.2013
Сообщений: 711
23.09.2014, 12:38 7
Learx, возможно, на строке "abba" нужно вернуть "abba" (группы различных символов ab-ba), а тот код вернет "abxba".
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
23.09.2014, 12:42 8
rRczZZ,
По идее при встрече двух одинаковых символов, он должен между ними вставлять символ x, например. есть слово tool, на выходе должно получаться toxol.
в первом сообщении нет ни слова о "группах различных символов" как была озвучена задача, так ее и решили. все остальное- это экстрасенсорика и гадание на кофейной гуще.
0
813 / 421 / 169
Регистрация: 08.02.2013
Сообщений: 711
23.09.2014, 12:46 9
Learx, Ok, но ведь потом уточнил человек вроде:
Цитата Сообщение от SKyzZz Посмотреть сообщение
если повторяющиеся буквы открытого текста образуют пару для шифрования, то между этими буквами вставляется специальная буква
Но я все равно код писать не буду, городить хитрые регулярки или стрингбилдеры, т.к. возможно в метод шифрования можно подавать по два байта. Т.е. нужно еще формат выходных данных уточнить
0
2 / 2 / 4
Регистрация: 13.02.2011
Сообщений: 163
23.09.2014, 12:52  [ТС] 10
Формат входа и выхода -> строка. На строке "abba" нужно вернуть "abba" (группы различных символов ab-ba), абсолютно верно! А если это abbba, то ab bb a* -> ab bxb a* -> ab bx ba* -> ab bx ba на выходе как строка "abbxba"
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
23.09.2014, 13:15 11
Лучший ответ Сообщение было отмечено SKyzZz как решение

Решение

SKyzZz,
C#
1
2
3
4
5
6
7
8
9
//r+=2 потому что должны проверять ПАРЫ символов
for (int r = 0; r < _opentext.Length - 1; r+=2)
            {
                if (_opentext[r] == _opentext[r + 1])
//мы вставляем ПОСЛЕ первого символа из пары и на следующей итерации второй символ 
//из старой пары образует теперь новую пару, которую мы и проверим
                    _opentext = _opentext.Insert(r+1, "x");
            }
            return _opentext;
2
23.09.2014, 13:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2014, 13:15
Помогаю со студенческими работами здесь

Добавление символа в строку char в С++ Builder
Доброго времени суток. Уже несколько часов ломаю голову, как в char строку добавить символ....

Считывание символа с клавиатуры и добавление его в строку
Привет! Мне нужно открыть файл, имя которого я ввожу с клавиатуры. Как открыть файл с определённым...

Добавление символа " в строку пользовательского формата даты
Пытаюсь вот таким вот образом обрамлять двойными ковычками день в строке пользовательского формата...

Добавление в строку экранирующего символа '\' перед каждой кавычкой в строке
Помогите пожалуйста!) Нужно написать класс StringFormatter с методом string SafeString( string s...

Добавление подстроки в строку после заданного символа + перевод с Tasm на intel
В общем, вот такое задание &quot;В исходную строку вставить после заданного символа все символы,...

Ввод строки S и символа С. Результат: число повторений символа С и порядковые позиции вхождения этого символа в строку
Нужно составить программу, в которой пользователь вводит вручную строку S и символ C. Результатом...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru