Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.97/34: Рейтинг темы: голосов - 34, средняя оценка - 4.97
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236

Как правильно распарсить строку

23.09.2013, 14:04. Показов 6709. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решил написать следующую программу, есть string One, в нем текст в такой форме:
C#
1
string One = "{Привет|Здравствуйте|Добрый день} Владимир!";
текст в "{}" это варианты, разделены они соответственно знаком "|", задача программы из этих вариантов выбрать один случайным образом, убрать знаки "{", "}", "|" и вывести полученный текст в новый объект string

При этом первоначальный объект может содержать вариант в варианте {|{|}}:
C#
1
string One = "{хорошо|замечательно|{не очень|плохо}}";
Для работы с вариантами и выбора в случайном порядке я решил использовать связанный список (с возможностью возвращать случай объект string из списка), сделал его, а вот как все это теперь организовать, мысли в голове крутятся, но толком не могу все это скомпоновать в конечный код, кто хочет попробовать дописать эту интересную программу, вот связанный список:

Кликните здесь для просмотра всего текста
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
56
57
58
59
60
61
62
63
64
static class ClassToRandom
{   public static Random randomNumber = new Random();   }
 
 
class StrNode
{
public string StringNode; // строка узла
public int NumberNode; // номер узла
public StrNode NextNode; // ссылка на следующий узел
 
public StrNode()
{ StringNode = default(string); NumberNode = default(int); NextNode = default(StrNode); }
 
public StrNode(string StringN, int NumberN, StrNode NextN)
{ StringNode = StringN; NumberNode = NumberN; NextNode = NextN; }
 
}
 
 
class NodeList
{
private StrNode HeadList; // первый узел (голова) списка 
private StrNode EndList; // последний узел (конец) списка 
 
public NodeList() { HeadList = default(StrNode); EndList = default(StrNode); }
 
public void AddNode (string rhs) // добавить узел в конец списка
{
/* если в списке нет узлов */
if (HeadList == default(StrNode) && EndList == default(StrNode))
{   StrNode temp = new StrNode(rhs, 1, default(StrNode));
HeadList = EndList = temp;    }
 
/* если в списке уже есть узлы */
else
{   StrNode temp = new StrNode(rhs, ((EndList.NumberNode) + 1), default(StrNode));
EndList.NextNode = temp;
EndList = temp; }
}
 
public string GetStringNode(int rhs) // по номеру узла вернуть string узла
{
if (HeadList.NumberNode == rhs) {   return HeadList.StringNode; }
 
else if (EndList.NumberNode == rhs) {   return EndList.StringNode;  }
 
else if ((rhs > HeadList.NumberNode) && (EndList.NumberNode > rhs))
{   StrNode temp = HeadList;
 
while (temp != default(StrNode))
{   if (temp.NumberNode == rhs) {   return temp.StringNode;   }
temp = temp.NextNode;   }
}
 
return "";
}
 
public string GetRandomString() // вернуть случайную строку из списка
{
return 
(GetStringNode(ClassToRandom.randomNumber.Next(HeadList.NumberNode, (EndList.NumberNode) + 1)));
}
 
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.09.2013, 14:04
Ответы с готовыми решениями:

Как правильно распарсить json строку и какой для этого нужен класс?
Что-то вообще в голову не лезет, как правильно распарсить такую строку и какой для этого нужно написать класс: { "data":...

Как правильно распарсить xml файл
Здравствуйте. Подскажите пожалуйста . У меня есть файл вот с таким содержанием <ROW> <username> NT AUTHORITY\LOCAL...

Как распарсить строку
Всем привет! У меня есть строки: "Администратор - Klicke für Details">Администратор</span></strong></td> ...

20
147 / 73 / 17
Регистрация: 31.05.2014
Сообщений: 215
23.08.2014, 14:36
Студворк — интернет-сервис помощи студентам
VLK, можно сказать, что так. Только он за 1 раз не только ищет все скобки, но и сразу разбивает. Да в основном из-за этого. Другие мелкие недочеты почти не влияют на производительность.

Добавлено через 5 минут
P.S. смотреть лучше по коду со StringBuilder т.к. там не применяется ухищрений, наподобие выреза строки начиная с указанного символа => код намного проще
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.08.2014, 14:36

Как распарсить строку?
Всем привет! У меня есть строка: <div class="work-info"> <!----> <!----><div class="work-description break-text"...

Как распарсить приложенную строку?
Как из ответа такого вида спарсить значение sid ? <script>location.href='location:http://109.234.155.164/powar/game.php?sid=тут циферки...

Как распарсить определенную строку в XML
Вот xml: 1 СТРОКА <Object Angles="0,-0,-140" dir="130" Ignore_heightcheck="0" iidle_range="0" Name="SPLDF4A_A3439"...

Как распарсить эту строку из сайта?
Есть сайт и есть программа, которая считывает некоторые числовые значения которые имеются на сайте. Конкретно мне надо данную строку: ...

Как распарсить строку JSON и получить оттуда только одно значение?
Сервер возвращает мне длинную JSON строку. Из нее мне нужно вытащить только ID. Я сделал так: public class IDResponse { ...


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

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru