Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 12

Разделение на части

29.03.2016, 19:03. Показов 1052. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет. Как можно реализовать разделение текста на части.
Пример:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
  Часть1
  {
    Часть1.1
  }
}
{
  Часть2
  {
    Часть2.1
    {
      Часть2.2
    }
  }
}
Возможно ли как-то парой строчкек кода получить текст второй части?
Мне на ум лезет только извращенный вариант с циклом и подсчитыванием знаков вхождение и знаков выхода
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.03.2016, 19:03
Ответы с готовыми решениями:

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

Разделение массива на две равные части
Заполняю массив размером 20 рандомными числами от 0 до 200. Надо разделить этот массив на две равные части. И эти части занести в массивы...

Разделение экрана на 2 части
можете кодом помочь)) нужен код html(небольшой) где 80% экрана скрипт script1.php а нижние 20% экрана скрипт script2.php верхние...

6
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18261 / 14186 / 5366
Регистрация: 17.03.2014
Сообщений: 28,871
Записей в блоге: 1
29.03.2016, 19:21
Noth, маловато информации. Частей всегда две? Скобки выровнены по началу строк? Если да, то вот две строки
C#
1
2
3
4
string text = "{\r\n  Часть1\r\n  {\r\n    Часть1.1\r\n  }\r\n}\r\n{\r\n  Часть2\r\n  {\r\n    Часть2.1\r\n    {\r\n  " +
    "    Часть2.2\r\n    }\r\n  }\r\n}";
int start = Regex.Matches(text, "^{", RegexOptions.Multiline)[1].Index;
string part2 = text.Substring(start).Trim('{', '}');
0
0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 12
29.03.2016, 19:24  [ТС]
Я написал так для более понятного вида.
Нет, не только две, может быть 5, а может ни одной.
вид может быть такой:
C#
1
{Часть1{Часть1.1}}{Часть2}
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
30.03.2016, 01:01
А это случайно не JSON имеется в виду?
0
0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 12
30.03.2016, 10:26  [ТС]
EvilFromHell, Нет
0
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
30.03.2016, 10:30
Noth, дай "живой" пример, не ограниченный 2 частями, ибо толком не ясно как "логику" продумать по таким примерам. Или более детально опиши что ты хочешь.
0
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
30.03.2016, 11:32
Степень вложенности известна заранее?

Добавлено через 4 минуты
Текстовый файл:
Кликните здесь для просмотра всего текста
Version 110 12
shadinggroup
{
Shaders 6
{
gta_normal_spec.sps eagle01_mx2\ns_bronzeeagle_head.dds 50.00000000 0.30000000 1.00000000;0.00000000;0.00000000 1.50000000 eagle01_mx2\ns_bronzeeagle_head_n.dds eagle01_mx2\ns_bronzeeagle_head_sns_bron zeeagle_body_sns_bronzeeagle_wing_s.dds
gta_normal_spec.sps eagle01_mx2\ns_bronzeeagle_body.dds 50.00000000 0.30000000 0.00000000;1.00000000;0.00000000 1.50000000 eagle01_mx2\ns_bronzeeagle_body_n.dds eagle01_mx2\ns_bronzeeagle_head_sns_bron zeeagle_body_sns_bronzeeagle_wing_s.dds
gta_normal_spec.sps eagle01_mx2\ns_bronzeeagle_wing.dds 50.00000000 0.50000000 0.00000000;0.00000000;1.00000000 1.50000000 eagle01_mx2\ns_bronzeeagle_wing_n.dds eagle01_mx2\ns_bronzeeagle_head_sns_bron zeeagle_body_sns_bronzeeagle_wing_s.dds
gta_normal_spec.sps eagle01_mx2\ns_bronzeeagle_head.dds 50.00000000 0.50000000 1.00000000;0.00000000;0.00000000 1.50000000 eagle01_mx2\ns_bronzeeagle_head_n.dds ns_BronzeEagle_head_Sns_BronzeEagle_wing _Sns_kiosk_S
gta_normal_spec.sps eagle01_mx2\ns_bronzeeagle_body.dds 50.00000000 0.30000000 1.00000000;0.00000000;0.00000000 1.50000000 eagle01_mx2\ns_bronzeeagle_body_n.dds eagle01_mx2\ns_bronzeeagle_body_s.dds
gta_normal_spec.sps eagle01_mx2\ns_bronzeeagle_wing.dds 50.00000000 0.30000000 0.00000000;1.00000000;0.00000000 1.50000000 eagle01_mx2\ns_bronzeeagle_wing_n.dds ns_BronzeEagle_head_Sns_BronzeEagle_wing _Sns_kiosk_S
}
}
lodgroup
{
high 1 eagle01_mx2\eagle01_mx2_high.mesh 0 9999.00000000
med none 9999.00000000
low none 9999.00000000
vlow none 9999.00000000
center 0.28234100 0.00000000 -0.35537500
AABBMin -0.79137400 -17.27847000 -0.77876700
AABBMax 0.79136700 17.27847000 0.77876700
radius 17.27851000
}


Чтение:
Кликните здесь для просмотра всего текста
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
 
namespace Constantius24.RAGE.openFormats.IV
{
    public class Drawable : TextResource
    {
        private List<OpenShader> shaders = new List<OpenShader>();
 
        public ReadOnlyCollection<OpenShader> Shaders { get { return shaders.AsReadOnly(); } }
 
        public Drawable() { }
 
        internal override void Read(StreamReader reader)
        {
            string rootDir = Path.GetDirectoryName((reader.BaseStream as FileStream).Name);
 
            while (!reader.EndOfStream)
            {
                string[] parts = ReadLine(reader).Split();
                switch (parts[0])
                {
                    case "shadinggroup":
                        reader.ReadLine(); // {
                        while ((parts = ReadLine(reader).Split())[0] != "}")
                            switch (parts[0])
                            {
                                case "Shaders":
                                    int shadersCount = int.Parse(parts[1]);
                                    reader.ReadLine(); // {
                                    while (shadersCount > 0)
                                    {
                                        var shader = new OpenShader(ReadLine(reader));
                                        foreach (var shaderParam in shader.Parameters.Values.Where(i => i.Type == "spTexture"))
                                        {
                                            string textureFileName = shaderParam.Value as string;
                                            if (!Path.HasExtension(textureFileName)) continue; // external
                                            if (textureFileName == "null")
                                            {
                                                shaderParam.Value = null;
                                                continue;
                                            }
 
                                            textureFileName = Path.Combine(rootDir, textureFileName);
                                            File.GetAttributes(textureFileName);
 
                                            shaderParam.Value = textureFileName;
                                        }
                                        shaders.Add(shader);
                                        shadersCount--;
                                    }
                                    reader.ReadLine(); // }
                                    break;
                                default:
                                    throw new NotSupportedException(parts[0]);
                            }
                        break;
                    case "skel":
                        reader.ReadLine(); // {
                        while ((parts = ReadLine(reader).Split())[0] != "}")
                            switch (parts[0])
                            {
                                case "skel": break;
                                default:
                                    throw new NotSupportedException(parts[0]);
                            }
                        break;
                    case "lodgroup":
                        reader.ReadLine(); // {
                        while ((parts = ReadLine(reader).Split())[0] != "}")
                            switch (parts[0])
                            {
                                case "high": break;
                                case "med": break;
                                case "low": break;
                                case "vlow": break;
                                case "center": break;
                                case "AABBMin": break;
                                case "AABBMax": break;
                                case "radius": break;
                                default:
                                    throw new NotSupportedException(parts[0]);
                            }
                        break;
                    case "light":
                        reader.ReadLine(); // {
                        while ((parts = ReadLine(reader).Split())[0] != "}")
                            switch (parts[0])
                            {
                                case "light": break;
                                default:
                                    throw new NotSupportedException(parts[0]);
                            }
                        break;
                    // only in drawable dictionary
                    case "gtaDrawable":
                        Name = parts[1];
                        reader.ReadLine(); // {
                        break;
                    // only in drawable dictionary
                    case "}": return;
                    default:
                        throw new NotSupportedException(parts[0]);
                }
            }
        }
    }
}


Добавлено через 1 минуту
ReadLine
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
    public abstract class TextResource
    {
        public string Name { get; internal set; }
        public static Encoding Encoding { get { return Encoding.ASCII; } }
        public static NumberFormatInfo NumberFormat { get { return CultureInfo.InvariantCulture.NumberFormat; } }
 
        public TextResource() { }
 
        internal abstract void Read(StreamReader reader);
 
        protected static string ReadLine(StreamReader reader) => reader.ReadLine().TrimStart(new[] { '\t' });
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.03.2016, 11:32
Помогаю со студенческими работами здесь

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

Разделение экрана на 2 части
Добрый день подскажите как можно разделить экран на 2 части. Как я понимаю надо в xml создать 2 объекта но я там не как не вижу ширину...

Разделение строк на части
C7-D5 поступает такая строка как мне ее разделить сначала по - а потом уже посимвольно. Пишу активно на C# но требуют С++ в C# это выглядит...

Разделение сайта на 2 части!
Всвязи с тем, что клиент хочет разделить сайт на две части, а до этого это был сайт для двух человек, нужно к примеру в новый диз на новом...

Разделение файла на части
Выбранный файл в ListBox1 нужно разделить на n-ное количество частей по нажатию кнопки Button4. Файл не должен создаваться с нуля, а уже...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru