Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 09.11.2019
Сообщений: 40

Удаление текста между скобками

04.12.2019, 00:31. Показов 3634. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, есть задание: Удалите из строки последовательности символов, расположенные между круглыми скобками вместе со скобками (считается, что скобки в строке расставлены без ошибок). Написал код, но не работает со вложенными скобками, не понимаю в чем проблема.
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace task11
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            String text = textBox1.Text;
            String pattern = @"\((([^\)]*)\))*";
            Regex rgx = new Regex(pattern);
            string result = rgx.Replace(text, "");
            Console.WriteLine("Text: " + text);
            result = System.Text.RegularExpressions.Regex.Replace(result, @"\s+", "");
            textBox1.Text = result;
        }
    }
}
Код дизайнера:
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
namespace task11
{
    partial class Form1
    {
        /// <summary>
        /// Обязательная переменная конструктора.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
 
        /// <summary>
        /// Освободить все используемые ресурсы.
        /// </summary>
        /// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
 
        #region Код, автоматически созданный конструктором форм Windows
 
        /// <summary>
        /// Требуемый метод для поддержки конструктора — не изменяйте 
        /// содержимое этого метода с помощью редактора кода.
        /// </summary>
        private void InitializeComponent()
        {
            this.textBox1 = new System.Windows.Forms.TextBox();
            this.label2 = new System.Windows.Forms.Label();
            this.button1 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // textBox1
            // 
            this.textBox1.BackColor = System.Drawing.SystemColors.Menu;
            this.textBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
            this.textBox1.Location = new System.Drawing.Point(318, 43);
            this.textBox1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(415, 26);
            this.textBox1.TabIndex = 1;
            // 
            // label2
            // 
            this.label2.AutoSize = true;
            this.label2.Font = new System.Drawing.Font("Microsoft Sans Serif", 28.2F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
            this.label2.ForeColor = System.Drawing.Color.DarkOrange;
            this.label2.Location = new System.Drawing.Point(11, 26);
            this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
            this.label2.Name = "label2";
            this.label2.Size = new System.Drawing.Size(270, 44);
            this.label2.TabIndex = 3;
            this.label2.Text = "Введите текст";
            // 
            // button1
            // 
            this.button1.BackColor = System.Drawing.Color.DarkOrange;
            this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 13.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
            this.button1.ForeColor = System.Drawing.SystemColors.ButtonHighlight;
            this.button1.Location = new System.Drawing.Point(226, 117);
            this.button1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(378, 66);
            this.button1.TabIndex = 5;
            this.button1.Text = "Удалить текст между скобок";
            this.button1.UseVisualStyleBackColor = false;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.BackColor = System.Drawing.SystemColors.ActiveBorder;
            this.ClientSize = new System.Drawing.Size(806, 366);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.textBox1);
            this.Controls.Add(this.label2);
            this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
            this.Name = "Form1";
            this.Text = "Удаление текста между скобками";
            this.ResumeLayout(false);
            this.PerformLayout();
 
        }
 
        #endregion
 
        private System.Windows.Forms.TextBox textBox1;
        private System.Windows.Forms.Label label2;
        private System.Windows.Forms.Button button1;
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.12.2019, 00:31
Ответы с готовыми решениями:

Рандомизация текста со скобками
Добрый день. Задача была такая. Распознавать такие вот теги в тексте и выбирать один из возможных вариантов: Что у меня получилось ...

Заменить в каждой строке файла символы, расположенные между скобками
1.Дан текст. Заменить в каждой строке символы, расположенные между скобками '(', ')' на '-'. Предполагается, что внутри каждой пары скобок...

Удаление Текста между скобками
Есть текст. asdasda fdfd &lt;qweqweqwe sdfsdfsdfsd sdfgggg dfgd fdf gfdg &gt;

3
Эксперт .NET
 Аватар для Usaga
14314 / 9400 / 1355
Регистрация: 21.01.2016
Сообщений: 35,452
04.12.2019, 06:42
Лучший ответ Сообщение было отмечено vinnyi как решение

Решение

vinnyi, да не трогайте вы эти бедные регулярные выражения.

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
using System;
using System.Diagnostics;
using System.Text;
 
namespace ConsoleApp1
{
    class Program
    {
        private const char OpenBracket = '(';
        private const char ClosingBracket = ')';
 
        private static string ExcludeBraces(string source)
        {
            var sb = new StringBuilder();
 
            var itor = source.GetEnumerator();
 
            while (itor.MoveNext())
            {
                if (itor.Current == OpenBracket)
                {
                    ReadBraces(itor);
                }
                else
                {
                    sb.Append(itor.Current);
                }
            }
 
            return sb.ToString();
        }
 
        private static void ReadBraces(CharEnumerator itor)
        {
            while (itor.MoveNext())
            {
                if(itor.Current == ClosingBracket)
                {
                    return;
                }
                else if(itor.Current == OpenBracket)
                {
                    ReadBraces(itor);
                }
            }
        }
 
        static void Main(string[] args)
        {
            var source = "afd(2(341,312);*)as(d)";
            var result = ExcludeBraces(source);
 
            Debug.Assert(result == "afdas");
 
            Console.WriteLine("Done");
            Console.ReadKey();
        }
    }
}
1
0 / 0 / 0
Регистрация: 09.11.2019
Сообщений: 40
04.12.2019, 12:30  [ТС]
Спасибо!
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
04.12.2019, 14:27
Лучший ответ Сообщение было отмечено vinnyi как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
        var source = "afd(2(341,312);*)as(d)";
        var result = new StringBuilder();
        var skip = 0;
        foreach (var ch in source)
        {
            if (ch == '(') { skip++; continue; }
            if (ch == ')') { skip--; continue; }
            if (skip == 0) result.Append(ch);
        }
        Console.WriteLine(result.ToString());
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.12.2019, 14:27
Помогаю со студенческими работами здесь

Удаление текста из скобок вместе со скобками
Поясните каждую строчку var s:string;i,len,p: integer; begin s:=Memo1.Text; len:=Length(s); p:=0; for i:=1 to len do begin...

Функция: удаление текста внутри скобок вместе со скобками
Использую MS VS2017 , закомментируйте пожалуйста данную функцию (char* str_remove(char* s, char a, char b) ) поэтапно, ибо не удаётся её...

В Notepad++ удаление содержимого между фигурными скобками. Регулярные выражения
Доброго дня всем. Возникла задача удаление содержимого в тысячах фалах c содержанием такого типа: version 2 extends...

Исключить из текста группы символов, расположенные между скобками
Подскажите пожалуйста,как &quot;Исключить из текста группы символов, расположенные между скобками ( , ). Сами скобки тоже должны быть исключены....

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru