Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676

Побуквенный разбор строки

16.11.2020, 10:28. Показов 2045. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть строка:

In every big city the monster was the latest rage; they sang about it in the coffee houses, they ridiculed it in the newspapers, they dramatized it in the theaters.

Есть массив букв и соответствий кода:
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
28
            string[,] voc = new string[27, 2];
            voc[0, 0] = " "; voc[0, 1] = "00";
            voc[1, 0] = "e"; voc[1, 1] = "100";
            voc[2, 0] = "t"; voc[2, 1] = "101";
            voc[3, 0] = "i"; voc[3, 1] = "11000";
            voc[4, 0] = "h"; voc[4, 1] = "11001";
            voc[5, 0] = "a"; voc[5, 1] = "11010";
            voc[6, 0] = "s"; voc[6, 1] = "11011";
            voc[7, 0] = "n"; voc[7, 1] = "11100";
            voc[8, 0] = "r"; voc[8, 1] = "11101";
            voc[9, 0] = "y"; voc[9, 1] = "111100";
            voc[10, 0] = "d"; voc[10, 1] = "111101";
            voc[11, 0] = "o"; voc[11, 1] = "111110";
            voc[12, 0] = "g"; voc[12, 1] = "111111";
            voc[13, 0] = "u"; voc[13, 1] = "01000";
            voc[14, 0] = "c"; voc[14, 1] = "01001";
            voc[15, 0] = "f"; voc[15, 1] = "01010";
            voc[16, 0] = "l"; voc[16, 1] = "01011";
            voc[17, 0] = "p"; voc[17, 1] = "011000";
            voc[18, 0] = ","; voc[18, 1] = "011001";
            voc[19, 0] = "b"; voc[19, 1] = "011010";
            voc[20, 0] = "w"; voc[20, 1] = "011011";
            voc[21, 0] = "m"; voc[21, 1] = "011100";
            voc[22, 0] = "z"; voc[22, 1] = "011101";
            voc[23, 0] = ";"; voc[23, 1] = "0111100";
            voc[24, 0] = "."; voc[24, 1] = "0111101";
            voc[25, 0] = "v"; voc[25, 1] = "0111110";
            voc[26, 0] = "I"; voc[26, 1] = "0111111";
Совсем не обязательно оформлять в таком виде, это лишь мой вариант.
И нужно читая входящие символы строки на вывод отдавать подмену каждого символа из массива первого столбца на строку из второго столбца. Я прочитал много информации по работе со строками, но любое из решений выдает те или иные ошибки.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.11.2020, 10:28
Ответы с готовыми решениями:

Книга "Конечный автомат 2: Возвращение". Часть 1. Разбор. Глава 8. Имя, проверка строки и разбор до. На том ли я пути?
Наверное, иногда прилюдно выругаться полезно... Стоило мне в предыдущей теме написать "омерзительный конечный автомат", как...

Побуквенный вывод текста
Здраствуйте мне нужно сделать побуквенный вывод текста UI.Но я не знаю как такое можно реализовать можете ли вы показать пример такого...

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

5
Эксперт .NET
 Аватар для Usaga
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,405
16.11.2020, 10:34
Цитата Сообщение от belalugoci Посмотреть сообщение
но любое из решений выдает те или иные ошибки.
Так покажите эти решения и ошибки.

А так, вместо массива можно использовать Dictionary<char, string>. Может быть не самое оптимальное решение, но очень простое в реализации.
0
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
16.11.2020, 10:42  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Так покажите эти решения и ошибки.
C#
1
if (str.Substring[y, 1] == voc[x, 0].Substring[0, 1]) itog.Append(voc[x, 1]);
Ошибка CS0021 Не удается применить индексирование через [] к выражению типа "группа методов".

C#
1
if (str[y] == voc[x, 0]) itog += voc[x, 1];
Ошибка CS0019 Оператор "==" невозможно применить к операнду типа "char" и "string".

C#
1
if (String.Equals(str[y], voc[x, 0])) itog += voc[x, 1];
Не находит ни одного совпадения
0
Эксперт .NET
 Аватар для Usaga
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,405
16.11.2020, 10:42
Лучший ответ Сообщение было отмечено belalugoci как решение

Решение

belalugoci,

Кликните здесь для просмотра всего текста
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApp
{
 
    class App
    {
        private static Dictionary<char, string> encriptionDict = new Dictionary<char, string>
        {
            { ' ' ,"00"},
            { 'e' ,"100"},
            { 't' ,"101"},
            { 'i' ,"11000"},
            { 'h' ,"11001"},
            { 'a' ,"11010"},
            { 's' ,"11011"},
            { 'n' ,"11100"},
            { 'r' ,"11101"},
            { 'y' ,"111100"},
            { 'd', "111101"},
            { 'o', "111110"},
            { 'g', "111111"},
            { 'u', "01000"},
            { 'c', "01001"},
            { 'f', "01010"},
            { 'l', "01011"},
            { 'p', "011000"},
            { ',', "011001"},
            { 'b', "011010"},
            { 'w', "011011"},
            { 'm', "011100"},
            { 'z', "011101"},
            { ';', "0111100"},
            { '.', "0111101"},
            { 'v', "0111110"},
            { 'I', "0111111"}
 
        };
 
        public static void Main()
        {
            var input = "In every big city the monster was the latest rage; they sang about it in the coffee houses, they ridiculed it in the newspapers, they dramatized it in the theaters.";
 
            var sb = new StringBuilder();
 
            foreach(var c in input)
            {
                sb.Append(encriptionDict[c]);
            }
 
            System.Console.WriteLine(sb.ToString());
        }
    }
}
1
 Аватар для belalugoci
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
16.11.2020, 10:58  [ТС]
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
28
29
30
31
32
33
34
35
            Dictionary<char, string> voc = new Dictionary<char, string>();
            string str = "In every big city the monster was the latest rage; they sang about it in the coffee houses, they ridiculed it in the newspapers, they dramatized it in the theaters.";
            StringBuilder itog = new StringBuilder();
            voc.Add(' ', "00");
            voc.Add('e', "100");
            voc.Add('t', "101");
            voc.Add('i', "11000");
            voc.Add('h', "11001");
            voc.Add('a', "11010");
            voc.Add('s', "11011");
            voc.Add('n', "11100");
            voc.Add('r', "11101");
            voc.Add('y', "111100");
            voc.Add('d', "111101");
            voc.Add('o', "111110");
            voc.Add('g', "111111");
            voc.Add('u', "01000");
            voc.Add('c', "01001");
            voc.Add('f', "01010");
            voc.Add('l', "01011");
            voc.Add('p', "011000");
            voc.Add(',', "011001");
            voc.Add('b', "011010");
            voc.Add('w', "011011");
            voc.Add('m', "011100");
            voc.Add('z', "011101");
            voc.Add(';', "0111100");
            voc.Add('.', "0111101");
            voc.Add('v', "0111110");
            voc.Add('I', "0111111");
            for (int y = 0; y < str.Length; y++)
            {
                itog.Append(voc[str[y]]);
            }
            File.WriteAllText(@"c:\work\words\output_bits.txt", itog.ToString());
мой вариант

вопрос по вашему коду, он мне больше нравится, но для меня не очевидно что foreach движется посимвольно - или это априори константно в такой ситуации?
0
Эксперт .NET
 Аватар для Usaga
14307 / 9388 / 1355
Регистрация: 21.01.2016
Сообщений: 35,405
16.11.2020, 11:01
Цитата Сообщение от belalugoci Посмотреть сообщение
но для меня не очевидно что foreach движется посимвольно
Строки реализуют интерфейс IEnumerable<char>, который возвращает итератор CharEnumerator.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        public static void Main()
        {
            var input = "In every big city the monster was the latest rage; they sang about it in the coffee houses, they ridiculed it in the newspapers, they dramatized it in the theaters.";
 
            var sb = new StringBuilder();
 
            CharEnumerator itor = input.GetEnumerator();
            while (itor.MoveNext())
            {
                sb.Append(encriptionDict[itor.Current]);
            }
 
            System.Console.WriteLine(sb.ToString());
        }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.11.2020, 11:01
Помогаю со студенческими работами здесь

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

Побуквенный транслитератор с кириллицы на латиницу
Всем привет! В теории код должен быть рабочим, но, мне кажется, я косячу с отступами. :( text = &quot;Меня зовут Маша.&quot; ...

Разбор строки
Доброго времени суток! Нуждаюсь очень в вашей помощи господа. Осваиваю stm32, столкнулся с такой трудностью: не могу понять как...

Разбор строки
Ребят, поделитесь советом, пожалуйста. Задача такая: есть некоторый текст ... A1:eo1_2 A2:eo2_34 A333:eo3_45 A54:eo4_9 ... ...

Разбор строки
Предположим у нас есть строка &quot;5*x^2+3*x+15&quot;. По этой функции заданной строкой требуется построить график. Я хочу сделать так: в цикле от...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru