0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 69
1

Удалите из строки последовательности символов, расположенные между круглыми скобками вместе со скобками

20.05.2014, 18:32. Показов 3400. Ответов 7
Метки нет (Все метки)

Удалите из строки последовательности символов, расположенные между круглыми скобками вместе со скобками (считается, что скобки в строке расставлены без ошибок).

Подскажите пожалуйста, как удалить скобки между скобками?

C#
1
2
3
4
5
6
7
8
9
StringBuilder line = new StringBuilder(textBox1.Text);
                for (int i = 0; i < line.Length; i++)
                    if (line[i] == '(')
                    {
                        while (line[i] != ')')
                            line.Remove(i, 1);
                        if (line[i] == ')') line.Remove(i, 1);
                       
                    }
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2014, 18:32
Ответы с готовыми решениями:

Удалить из строки последовательность символов, расположенных между круглыми скобками
Здравствуйте) Подскажите, плиз, как из строки удалить последовательность символов, расположенных...

Удалить из строки все последовательности символов, заключенные в скобки, вместе со скобками
Ввести строку (с нуль-окончанием). Удалить из введенной строки все последовательности символов,...

Удалить из строки символы между круглыми скобками
удаляет из нее последовательность символов, расположенных между круглыми скобками (считается, что в...

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

7
319 / 279 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
20.05.2014, 19:24 2
Тут все намного проще. Создаете регулярное выражение для скобок. Потом заменяете все значения на пустоту. Пример msdn
1
549 / 317 / 138
Регистрация: 08.02.2013
Сообщений: 609
20.05.2014, 19:28 3
Mavrick, или считаете число открывающих и закрывающих скобок
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
string s = "l(a+b) + ((a+b) * 2)r";
 
int r = 0, c = 0;
StringBuilder sb = new StringBuilder(s);
for (int i = s.Length; i-- > 0; )
{
    if (s[i] == ')' && c++ == 0) r = i;
    if (s[i] == '(' && --c <= 0)
    {
        if (c < 0) break;
        sb.Remove(i, r - i + 1);
    }
}
 
s = c == 0 ? sb.ToString() : "error"; // = "l + r"
1
319 / 279 / 109
Регистрация: 27.09.2010
Сообщений: 1,058
20.05.2014, 19:34 4
Лучший ответ Сообщение было отмечено Mavrick как решение

Решение

Вот накидал вариант. Проще не бывает)
C#
1
2
3
4
5
6
String text = "Hello (earth) world!";
String pattern = @"\(([^\)]*)\)";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(text, "");
Console.WriteLine("Text: "+text);
Console.WriteLine("Result: "+result);
2
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 69
20.05.2014, 20:20  [ТС] 5
Добавлено через 2 минуты

Увы, в Вашем варианте, как и в моем удаляет все до первой закрытой скобки включительно. Должно быть так:
Предположим, исходная строка: 1(епке(ар(нрек)рере)2.
Конечная строка: 12.
0
Эксперт .NET
5448 / 4222 / 1207
Регистрация: 12.10.2013
Сообщений: 12,213
Записей в блоге: 2
20.05.2014, 21:46 6
Mavrick, а такой вариант?
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
using System.Threading;
using System.Threading.Tasks;
 
 
namespace ConsoleApplication43
{
    class Program
    {
        static void Main(string[] args)
        {
            string myString = "1(hgdhd(hh)jjkj)2";
            int start = Array.FindIndex(myString.ToCharArray(), delegate(char ch) 
            { return ch == '('; });
            int end=Array.FindLastIndex(myString.ToCharArray(),delegate(char ch)
            { return ch == ')'; });
 
            string newString=string.Empty;
            if (start != 0 && end != 0 && start!=end)
            {
                newString = myString.Remove(start, end);
            }
            Console.WriteLine("Result: {0}", newString);
            Console.ReadLine();
        }
    }
}
1
0 / 0 / 0
Регистрация: 16.05.2018
Сообщений: 3
03.12.2018, 11:12 7
а можно комментарии?
0
Модератор
Эксперт .NET
12887 / 9244 / 2489
Регистрация: 21.04.2018
Сообщений: 27,448
Записей в блоге: 2
03.12.2018, 13:23 8
Цитата Сообщение от Mavrick Посмотреть сообщение
Увы, в Вашем варианте, как и в моем удаляет все до первой закрытой скобки включительно. Должно быть так:
Предположим, исходная строка: 1(епке(ар(нрек)рере)2.
Конечная строка: 12.
А нужно ли проверять на корректность, то есть что скобок '(' и ')' одинаковое количество?
Если нет, то это фактически удаление между первой '(' и последней ')'.

Добавлено через 8 минут
То есть из Вашего примера ответ именно "12", а не "1(епке2". Если да, то так
C#
1
2
3
4
5
6
           string myString = "1(епке(ар(нрек)рере)2";
           int first = myString.IndexOf('('); // Позиция первой скобки (
           int last = myString.LastIndexOf(')'); // Позиция последней скобки )
           int length = last-first; // количество символов между скобками ()
            if (length > 0)
                  myString =myString.Remove(first, length+1);
Добавлено через 4 минуты
А в таких строках "1(епке(ар(нрек)рере)(2" и "1)(епке(ар(нрек)рере)2", какой должен быть результат?

Добавлено через 8 минут
Прочитал условие из ТЗ "считается, что скобки в строке расставлены без ошибок". С этим условием код даст нужный результат.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2018, 13:23
Помогаю со студенческими работами здесь

Из строки удалить все последовательности символов, находящиеся между круглыми скобками
Здравствуйте, нужно написать программу: &quot;Из заданной строки удалить все последовательности...

Удалить все символы строки, расположенные между круглыми скобками
Введите строку.Удалить все символы,расположенные между круглыми скобками.(Примечание,В строке...

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

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

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

Удалить из строки последовательность символов, расположенных между круглыми скобками
Разработать программу которая для заданной строки s удаляет из неё последовательность символов...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru