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

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

29.03.2016, 19:03. Показов 778. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2016, 19:03
Ответы с готовыми решениями:

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

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

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

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

6
Администратор
Эксперт .NET
15093 / 12161 / 4870
Регистрация: 17.03.2014
Сообщений: 24,631
Записей в блоге: 1
29.03.2016, 19:21 2
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  [ТС] 3
Я написал так для более понятного вида.
Нет, не только две, может быть 5, а может ни одной.
вид может быть такой:
C#
1
{Часть1{Часть1.1}}{Часть2}
0
974 / 869 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
30.03.2016, 01:01 4
А это случайно не JSON имеется в виду?
0
0 / 0 / 0
Регистрация: 23.02.2016
Сообщений: 12
30.03.2016, 10:26  [ТС] 5
EvilFromHell, Нет
0
910 / 795 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
30.03.2016, 10:30 6
Noth, дай "живой" пример, не ограниченный 2 частями, ибо толком не ясно как "логику" продумать по таким примерам. Или более детально опиши что ты хочешь.
0
68 / 68 / 42
Регистрация: 30.03.2015
Сообщений: 372
30.03.2016, 11:32 7
Степень вложенности известна заранее?

Добавлено через 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_bronzeeagle_bo dy_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_bronzeeagle_bo dy_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_bronzeeagle_bo dy_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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2016, 11:32
Помогаю со студенческими работами здесь

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

Разделение строк на части
C7-D5 поступает такая строка как мне ее разделить сначала по - а потом уже посимвольно. Пишу...

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

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


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

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

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