Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904

Удалить все пробелы и табуляции но не перенос на другую строку из текста в переменной string

23.07.2017, 13:14. Показов 5868. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Скажите как удалить в тексте все пробелы и табуляции но не специальные символы те которые переносят на другую строку и проочее. Текс находится в переменной string
Еще также впрос как примерно такой формат текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
;SRegion_color:A
        dc.w 1, 0, 2, 0, 0, 0, 0, 0, 3, 0  ; atreides - mission 1
        dc.w 1, 1, 2, 0, 0, 2, 0, 0, 3, 3  ; atreides - mission 2
        dc.w 1, 1, 2, 3, 1, 2, 0, 3, 3, 2  ; atreides - mission 3
        dc.w 1, 1, 2, 1, 2, 2, 0, 3, 3, 2  ; atreides - mission 4
        dc.w 1, 2, 2, 3, 2, 2, 0, 1, 3, 2  ; atreides - mission 5
        dc.w 1, 2, 2, 2, 2, 2, 0, 1, 3, 2  ; atreides - mission 6
        dc.w 2, 2, 2, 2, 2, 2, 0, 1, 3, 2  ; atreides - mission 7
        dc.w 2, 2, 2, 2, 2, 2, 0, 1, 2, 2  ; atreides - mission 8
        dc.w 2, 2, 2, 2, 2, 2, 0, 2, 2, 2  ; atreides - mission 9
        dc.w 2, 2, 2, 2, 2, 2, 2, 2, 2, 2  ; atreides - finale
;ERegion_color:A
Как сделать чтение в массив тоесть нужно числа получить в двухмерный массив

Добавлено через 7 минут
Еще нужно знать какой спец символ отвечает за перенос на другую строку в Delphi
#13#10 но в c# есть \n вот и думаю какой использовать

Добавлено через 5 минут
Ах да ;SRegion_color:A и ;ERegion_color:A это начало и конец по тому как там есть и другое вот полный файл
текст файла
;**** ����� ������� ������������ �� ����� �������� (����� 4-�� �� 6-��).
;**** 0-EARTH, 1-HARK, 2-ATREIDES, 3-ORDOS, 4-SARDAUKAR,5-FREMEN

palettes_to_use:
;SPalettes_to_use:H
dc.b 0,1,2,3 ; harkonnen - mission 1
dc.b 0,1,2,3 ; harkonnen - mission 2
dc.b 0,1,2,3 ; harkonnen - mission 3
dc.b 0,1,2,3 ; harkonnen - mission 4
dc.b 0,1,2,3 ; harkonnen - mission 5
dc.b 0,1,2,3 ; harkonnen - mission 6
dc.b 0,1,2,3 ; harkonnen - mission 7
dc.b 0,1,2,3 ; harkonnen - mission 8
dc.b 4,1,2,3 ; harkonnen - mission 9
;EPalettes_to_use:H

;SPalettes_to_use:A
dc.b 0,1,2,3 ; atreides - mission 1
dc.b 0,1,2,3 ; atreides - mission 2
dc.b 0,1,2,3 ; atreides - mission 3
dc.b 0,1,2,3 ; atreides - mission 4
dc.b 0,1,2,3 ; atreides - mission 5
dc.b 0,1,2,3 ; atreides - mission 6
dc.b 0,1,2,3 ; atreides - mission 7
dc.b 0,1,2,3 ; atreides - mission 8
dc.b 4,1,2,3 ; atreides - mission 9
;EPalettes_to_use:A

;SPalettes_to_use:O
dc.b 0,1,2,3 ; ordos - mission 1
dc.b 0,1,2,3 ; ordos - mission 2
dc.b 0,1,2,3 ; ordos - mission 3
dc.b 0,1,2,3 ; ordos - mission 4
dc.b 0,1,2,3 ; ordos - mission 5
dc.b 0,1,2,3 ; ordos - mission 6
dc.b 0,1,2,3 ; ordos - mission 7
dc.b 0,1,2,3 ; ordos - mission 8
dc.b 4,1,2,3 ; ordos - mission 9
;EPalettes_to_use:O

;SPalettes_to_use:F
dc.b 0,1,5,3 ; fremen - mission 1
dc.b 0,1,5,3 ; fremen - mission 2
dc.b 0,1,5,3 ; fremen - mission 3
dc.b 0,1,5,3 ; fremen - mission 4
dc.b 0,1,5,3 ; fremen - mission 5
dc.b 0,1,5,3 ; fremen - mission 6
dc.b 0,1,5,3 ; fremen - mission 7
dc.b 0,1,5,3 ; fremen - mission 8
dc.b 4,1,5,3 ; fremen - mission 9
;EPalettes_to_use:F

;SPalettes_to_use:S
dc.b 4,1,2,3 ; sardaukar - mission 1
dc.b 4,1,2,3 ; sardaukar - mission 2
dc.b 4,1,2,3 ; sardaukar - mission 3
dc.b 4,1,2,3 ; sardaukar - mission 4
dc.b 4,1,2,3 ; sardaukar - mission 5
dc.b 4,1,2,3 ; sardaukar - mission 6
dc.b 4,1,2,3 ; sardaukar - mission 7
dc.b 4,1,2,3 ; sardaukar - mission 8
dc.b 4,1,2,3 ; sardaukar - mission 9
;EPalettes_to_use:S


;*** �������� �������� (������) �����, ����� �� ������� ������, ������� ������ � palettes_to_use.
;*** ����������� ������� (������) ������ - �������� �� 0 �� 3.

region_color_A:
;SRegion_color:A
dc.w 1, 0, 2, 0, 0, 0, 0, 0, 3, 0 ; atreides - mission 1
dc.w 1, 1, 2, 0, 0, 2, 0, 0, 3, 3 ; atreides - mission 2
dc.w 1, 1, 2, 3, 1, 2, 0, 3, 3, 2 ; atreides - mission 3
dc.w 1, 1, 2, 1, 2, 2, 0, 3, 3, 2 ; atreides - mission 4
dc.w 1, 2, 2, 3, 2, 2, 0, 1, 3, 2 ; atreides - mission 5
dc.w 1, 2, 2, 2, 2, 2, 0, 1, 3, 2 ; atreides - mission 6
dc.w 2, 2, 2, 2, 2, 2, 0, 1, 3, 2 ; atreides - mission 7
dc.w 2, 2, 2, 2, 2, 2, 0, 1, 2, 2 ; atreides - mission 8
dc.w 2, 2, 2, 2, 2, 2, 0, 2, 2, 2 ; atreides - mission 9
dc.w 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ; atreides - finale
;ERegion_color:A

region_color_O:
;SRegion_color:O
dc.w 0, 0, 0, 2, 0, 0, 1, 0, 3, 0 ; ordos - mission 1
dc.w 0, 0, 0, 2, 2, 0, 1, 3, 3, 1 ; ordos - mission 2
dc.w 2, 0, 1, 2, 2, 1, 3, 3, 3, 1 ; ordos - mission 3
dc.w 2, 0, 2, 3, 2, 1, 3, 3, 3, 1 ; ordos - mission 4
dc.w 2, 0, 2, 3, 3, 1, 3, 3, 3, 1 ; ordos - mission 5
dc.w 2, 0, 2, 3, 3, 1, 3, 3, 3, 3 ; ordos - mission 6
dc.w 3, 0, 2, 3, 3, 1, 3, 3, 3, 3 ; ordos - mission 7
dc.w 3, 0, 2, 3, 3, 3, 3, 3, 3, 3 ; ordos - mission 8
dc.w 3, 0, 3, 3, 3, 3, 3, 3, 3, 3 ; ordos - mission 9
dc.w 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 ; ordos - finale
;ERegion_color:O

region_color_H:
;SRegion_color:H
dc.w 1, 0, 2, 0, 3, 0, 0, 0, 0, 0 ; harkonnen - mission 1
dc.w 1, 1, 2, 3, 3, 0, 2, 0, 0, 0 ; harkonnen - mission 2
dc.w 1, 1, 1, 3, 3, 3, 2, 2, 0, 2 ; harkonnen - mission 3
dc.w 1, 1, 1, 3, 1, 3, 2, 2, 0, 2 ; harkonnen - mission 4
dc.w 1, 1, 1, 1, 1, 3, 2, 2, 0, 3 ; harkonnen - mission 5
dc.w 1, 1, 1, 1, 1, 3, 1, 2, 0, 3 ; harkonnen - mission 6
dc.w 1, 1, 1, 1, 1, 1, 1, 2, 0, 3 ; harkonnen - mission 7
dc.w 1, 1, 1, 1, 1, 1, 1, 1, 0, 3 ; harkonnen - mission 8
dc.w 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 ; harkonnen - mission 9
dc.w 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ; harkonnen - finale
;ERegion_color:H

region_color_F:
;SRegion_color:F
dc.w 1, 0, 2, 0, 0, 0, 0, 0, 3, 0 ; fremen - mission 1
dc.w 1, 1, 2, 0, 0, 2, 0, 0, 3, 3 ; fremen - mission 2
dc.w 1, 1, 2, 3, 1, 2, 0, 3, 3, 2 ; fremen - mission 3
dc.w 1, 1, 2, 1, 2, 2, 0, 3, 3, 2 ; fremen - mission 4
dc.w 1, 2, 2, 3, 2, 2, 0, 1, 3, 2 ; fremen - mission 5
dc.w 1, 2, 2, 2, 2, 2, 0, 1, 3, 2 ; fremen - mission 6
dc.w 2, 2, 2, 2, 2, 2, 0, 1, 3, 2 ; fremen - mission 7
dc.w 2, 2, 2, 2, 2, 2, 0, 1, 2, 2 ; fremen - mission 8
dc.w 2, 2, 2, 2, 2, 2, 0, 2, 2, 2 ; fremen - mission 9
dc.w 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ; fremen - finale
;ERegion_color:F

region_color_S:
;SRegion_color:S
dc.w 3, 0, 0, 0, 1, 0, 0, 0, 0, 2 ; sardaukar - mission 1
dc.w 3, 3, 0, 1, 1, 0, 0, 0, 2, 2 ; sardaukar - mission 2
dc.w 3, 3, 3, 0, 1, 1, 0, 0, 2, 2 ; sardaukar - mission 3
dc.w 0, 3, 3, 0, 1, 1, 0, 0, 2, 2 ; sardaukar - mission 4
dc.w 0, 0, 3, 0, 1, 1, 0, 0, 2, 2 ; sardaukar - mission 5
dc.w 0, 0, 3, 0, 1, 1, 0, 0, 0, 2 ; sardaukar - mission 6
dc.w 0, 0, 3, 0, 0, 1, 0, 0, 0, 2 ; sardaukar - mission 7
dc.w 0, 0, 0, 0, 0, 1, 0, 0, 0, 2 ; sardaukar - mission 8
dc.w 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 ; sardaukar - mission 9
dc.w 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; sardaukar - finale
;ERegion_color:S


;*** arrow_X_pos, arrow_Y_pos, arrow_base (UDLR), region part ID.
;*** ������� ������� �������-��������� X, Y, �����������, ����� ����� ������� �� ����� ����� ���.
;*** �������� ��� �����������: 0-UP, $120-RIGHT, $240-DOWN, $360-LEFT.

region_map_A:
;SRegion_map:A
dc.w $FFE0, $FFCE, 0, 5 ; atreides - mission 1
dc.w $FFE0, $FFCE, 0, 9 ; atreides - mission 2
dc.w $FFE0, $FFCE, 0, 4 ; atreides - mission 3
dc.w $FFE0, $FFCE, 0, 1 ; atreides - mission 4
dc.w $FFE0, $FFCE, 0, 3 ; atreides - mission 5
dc.w $FFE0, $FFCE, 0, 0 ; atreides - mission 6
dc.w $FFE0, $FFCE, 0, 8 ; atreides - mission 7
dc.w $FFE0, $FFCE, 0, 7 ; atreides - mission 8
dc.w $FFE0, $FFCE, 0, 6 ; atreides - mission 9
;ERegion_map:A

region_map_O:
;SRegion_map:O
dc.w $FFE0, $FFCE, 0, 7 ; ordos - mission 1
dc.w $FFE0, $FFCE, 0, 6 ; ordos - mission 2
dc.w $FFE0, $FFCE, 0, 3 ; ordos - mission 3
dc.w $FFE0, $FFCE, 0, 4 ; ordos - mission 4
dc.w $FFE0, $FFCE, 0, 9 ; ordos - mission 5
dc.w $FFE0, $FFCE, 0, 0 ; ordos - mission 6
dc.w $FFE0, $FFCE, 0, 5 ; ordos - mission 7
dc.w $FFE0, $FFCE, 0, 2 ; ordos - mission 8
dc.w $FFE0, $FFCE, 0, 1 ; ordos - mission 9
;ERegion_map:O

region_map_H:
;SRegion_map:H
dc.w $FFE0, $FFCE, 0, 1 ; harkonnen - mission 1
dc.w $FFE0, $FFCE, 0, 2 ; harkonnen - mission 2
dc.w $FFE0, $FFCE, 0, 4 ; harkonnen - mission 3
dc.w $FFE0, $FFCE, 0, 3 ; harkonnen - mission 4
dc.w $FFE0, $FFCE, 0, 6 ; harkonnen - mission 5
dc.w $FFE0, $FFCE, 0, 5 ; harkonnen - mission 6
dc.w $FFE0, $FFCE, 0, 7 ; harkonnen - mission 7
dc.w $FFE0, $FFCE, 0, 9 ; harkonnen - mission 8
dc.w $FFE0, $FFCE, 0, 8 ; harkonnen - mission 9
;ERegion_map:H

region_map_F:
;SRegion_map:F
dc.w $FFE0, $FFCE, 0, 5 ; fremen - mission 1
dc.w $FFE0, $FFCE, 0, 9 ; fremen - mission 2
dc.w $FFE0, $FFCE, 0, 4 ; fremen - mission 3
dc.w $FFE0, $FFCE, 0, 1 ; fremen - mission 4
dc.w $FFE0, $FFCE, 0, 3 ; fremen - mission 5
dc.w $FFE0, $FFCE, 0, 0 ; fremen - mission 6
dc.w $FFE0, $FFCE, 0, 8 ; fremen - mission 7
dc.w $FFE0, $FFCE, 0, 7 ; fremen - mission 8
dc.w $FFE0, $FFCE, 0, 6 ; fremen - mission 9
;ERegion_map:F

region_map_S:
;SRegion_map:S
dc.w $FFE0, $FFCE, 0, 1 ; sardaukar - mission 1
dc.w $FFE0, $FFCE, 0, 2 ; sardaukar - mission 2
dc.w $FFE0, $FFCE, 0, 4 ; sardaukar - mission 3
dc.w $FFE0, $FFCE, 0, 3 ; sardaukar - mission 4
dc.w $FFE0, $FFCE, 0, 6 ; sardaukar - mission 5
dc.w $FFE0, $FFCE, 0, 5 ; sardaukar - mission 6
dc.w $FFE0, $FFCE, 0, 7 ; sardaukar - mission 7
dc.w $FFE0, $FFCE, 0, 9 ; sardaukar - mission 8
dc.w $FFE0, $FFCE, 0, 8 ; sardaukar - mission 9
;ERegion_map:S
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.07.2017, 13:14
Ответы с готовыми решениями:

Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов
Дана строка удалить все пробелы или просто присвоить в другую строку без пробелов

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

Поиск текста в переменной и перенос в другую переменную
Есть некая переменная ааа, в ней текст REALM0=Alpha REALM1=Gamma REALM2=Epsilon ... нужно найти весь текст REALM0,...

34
Эксперт .NET
 Аватар для Usaga
14819 / 9597 / 1369
Регистрация: 21.01.2016
Сообщений: 36,144
30.07.2017, 10:56
Студворк — интернет-сервис помощи студентам
Alexandr_7, "на конце" чего? Последний элемент массива?
0
 Аватар для proghelp4you
62 / 62 / 34
Регистрация: 09.07.2017
Сообщений: 475
30.07.2017, 12:24
Alexandr_7,
C#
1
2
3
4
5
6
7
8
9
10
11
string sourceString = "Привет, мир";
string[] endOfStringMarks = { ".", "!", "?" };
 
bool isStringEndsWithMarkFromArray = false;
 
for (int i = 0; i < endOfStringMarks.Length; i++)
    if (sourceString.EndsWith(endOfStringMarks[i]))
        isStringEndsWithMarkFromArray = true;
 
if (!isStringEndsWithMarkFromArray)
    sourceString += endOfStringMarks[0];
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
30.07.2017, 14:44  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Alexandr_7, "на конце" чего? Последний элемент массива?
В конце строки ну последний символ строки если он не равен одному из символов в массиве то добавить точку
0
 Аватар для proghelp4you
62 / 62 / 34
Регистрация: 09.07.2017
Сообщений: 475
30.07.2017, 15:01
Alexandr_7, можно еще проще сделать
C#
1
2
3
4
5
string sourceString = "Привет, мир";
char[] endOfStringMarks = { '.', '!', '?' };
 
if (!(new List<char>(endOfStringMarks)).Contains(sourceString[sourceString.Length - 1]))
    sourceString += endOfStringMarks[0];
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
01.08.2017, 18:40  [ТС]
И снова здравствуйте
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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
public void LoadTDMASM(ref string aTDMGreeting, ref string[] aTDMBriefing, ref string[] aTDMAdvice, ref string[] aTDMVictory, ref string[] aTDMDefeat, string aFileName, string aDinasty)
        {
            StreamReader fsr = new StreamReader(aFileName, Encoding.GetEncoding(1251));
            string strRead = "";
            bool aParsing = false;
            byte IDText = 0;
            int IDMission = 0;
            int i1 = 0, l1 = 0, i2 = 0, l2 = 0;
            while (!fsr.EndOfStream)
            {
                strRead = fsr.ReadLine();
                if (aParsing == true)
                {
                    switch (IDText)
                    {
                        case 0:
                            i1 = StrIndexOf(strRead, GetStringAndSize("dc.b '", ref l1));
                            i2 = StrIndexOf(strRead, GetStringAndSize("',0", ref l2));
                            aTDMGreeting = strRead.Substring(i1 + l1, i2 - (i1 + l1));
                            aParsing = false;
                            break;
                        case 1:
                            i1 = StrIndexOf(strRead, GetStringAndSize("dc.b '", ref l1));
                            i2 = StrIndexOf(strRead, GetStringAndSize("',0", ref l2));
                            aTDMBriefing[IDMission] = strRead.Substring(i1 + l1, i2 - (i1 + l1));
                            aParsing = false;
                            break;
                        case 2:
                            i1 = StrIndexOf(strRead, GetStringAndSize("dc.b '", ref l1));
                            i2 = StrIndexOf(strRead, GetStringAndSize("',0", ref l2));
                            aTDMAdvice[IDMission] = strRead.Substring(i1 + l1, i2 - (i1 + l1));
                            aParsing = false;
                            break;
                        case 3:
                            i1 = StrIndexOf(strRead, GetStringAndSize("dc.b '", ref l1));
                            i2 = StrIndexOf(strRead, GetStringAndSize("',0", ref l2));
                            aTDMVictory[IDMission] = strRead.Substring(i1 + l1, i2 - (i1 + l1));
                            aParsing = false;
                            break;
                        case 4:
                            i1 = StrIndexOf(strRead, GetStringAndSize("dc.b '", ref l1));
                            i2 = StrIndexOf(strRead, GetStringAndSize("',0", ref l2));
                            aTDMDefeat[IDMission] = strRead.Substring(i1 + l1, i2 - (i1 + l1));
                            aParsing = false;
                            break;
                    }
                }
 
                if (StrIndexOf(strRead, aDinasty + "Begins:") >= 0)
                {
                    aParsing = true;
                    IDText = 0;
                }
 
                for (int i = 0; i < 9; i++)
                {
                    if (StrIndexOf(strRead, aDinasty + "M" + i.ToString() + ":") >= 0)
                    {
                        aParsing = true;
                        IDText = 1;
                        IDMission = i;
                    }
                    if (StrIndexOf(strRead, aDinasty + "M" + i.ToString() + "Advice:") >= 0)
                    {
                        aParsing = true;
                        IDText = 2;
                        IDMission = i;
                    }
                    if (StrIndexOf(strRead, aDinasty + "M" + i.ToString() + "Comp:") >= 0)
                    {
                        aParsing = true;
                        IDText = 3;
                        IDMission = i;
                    }
                    if (StrIndexOf(strRead, aDinasty + "M" + i.ToString() + "Fail:") >= 0)
                    {
                        aParsing = true;
                        IDText = 4;
                        IDMission = i;
                    }
                }
            }
            fsr.Close();
        }
 
public void SaveTDMASM(string aTDMGreeting, string[] aTDMBriefing, string[] aTDMAdvice, string[] aTDMVictory, string[] aTDMDefeat, string aFileName, string aDinasty)
        {
            StreamReader fsr = new StreamReader(aFileName, Encoding.GetEncoding(1251));
            string strWrite = "", strRead = "";
            bool aParsing = false;
            byte IDText = 0;
            int IDMission = 0;
 
            while (!fsr.EndOfStream)
            {
                strRead = fsr.ReadLine();
                if (aParsing == true)
                {
                    switch (IDText)
                    {
                        case 0:
                            strRead = "\tdc.b '" + aTDMGreeting + "',0";
                            aParsing = false;
                            break;
                        case 1:
                            strRead = "\tdc.b '" + aTDMBriefing[IDMission] + "',0";
                            aParsing = false;
                            break;
                        case 2:
                            strRead = "\tdc.b '" + aTDMAdvice[IDMission] + "',0";
                            aParsing = false;
                            break;
                        case 3:
                            strRead = "\tdc.b '" + aTDMVictory[IDMission] + "',0";
                            aParsing = false;
                            break;
                        case 4:
                            strRead = "\tdc.b '" + aTDMDefeat[IDMission] + "',0";
                            aParsing = false;
                            break;
                    }
                }
 
                if (StrIndexOf(strRead, aDinasty + "Begins:") >= 0)
                {
                    aParsing = true;
                    IDText = 0;
                }
 
                for (int i = 0; i < 9; i++)
                {
                    if (StrIndexOf(strRead, aDinasty + "M" + i.ToString() + ":") >= 0)
                    {
                        aParsing = true;
                        IDText = 1;
                        IDMission = i;
                    }
                    if (StrIndexOf(strRead, aDinasty + "M" + i.ToString() + "Advice:") >= 0)
                    {
                        aParsing = true;
                        IDText = 2;
                        IDMission = i;
                    }
                    if (StrIndexOf(strRead, aDinasty + "M" + i.ToString() + "Comp:") >= 0)
                    {
                        aParsing = true;
                        IDText = 3;
                        IDMission = i;
                    }
                    if (StrIndexOf(strRead, aDinasty + "M" + i.ToString() + "Fail:") >= 0)
                    {
                        aParsing = true;
                        IDText = 4;
                        IDMission = i;
                    }
                }
 
                strWrite += strRead + Environment.NewLine;
            }
            fsr.Close();
            strWrite.Remove(strWrite.Length - Environment.NewLine.Length, Environment.NewLine.Length);
 
            StreamWriter fsw = new StreamWriter(aFileName, false, Encoding.GetEncoding(1251));
            fsw.Write(strWrite);
            fsw.Close();
        }
Можно ли както облегчить данный код но с темже результатом?

Просьба модераторов переименовать тему к примеру Парсинг текста в c#
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
01.08.2017, 18:40  [ТС]
Случайный дубляж из за ошибок с загрузкой сайта
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
02.08.2017, 21:30  [ТС]
Не ну может кто знает способ проще а по поводу посмледнего сообщенния 26 то я имел в виду что это случайный дубляж сообщения 25
0
Эксперт .NET
 Аватар для Usaga
14819 / 9597 / 1369
Регистрация: 21.01.2016
Сообщений: 36,144
03.08.2017, 06:42
Alexandr_7, а что "проще"? Данный код вообще бы выкинуть по-хорошему.

Судя по тому, как метод LoadTDMASM принимает параметры, по их количеству, можно сделать вывод, что в приложение просится ещё один класс.

В самом методе, как и в остальных, куча копипасты, которую можно или вынести в отдельные методы или в виде общей части описать после switch, в котором только формировать параметры для оставшейся части.

Куча одинаковых строковых литералов. Можно было бы вынести их в виде констант.

Куча избыточной конкатенации строк. Да и получаемые так строки не используются само по себе, а нужны только для определения факта наличия такой же в виде подстроки в другой строке. Можно было бы заранее сформировать таблицу данный "опорных" строк и переиспользовать сколько душе угодно, а не загаживать heap мусором.

Осознайте уже, что строка - всего лишь массив символов (char[]) - его можно перебирать и анализировать вдоль и поперёк не порождая 100500 ненужных подстрок.

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

Наличие кучи параметров раз за разом передаваемых в разные методы - признак того, что они являются частью чего-то большего, что можно было бы завернуть в класс или структуру.
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
03.08.2017, 18:25  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Судя по тому, как метод LoadTDMASM принимает параметры, по их количеству, можно сделать вывод, что в приложение просится ещё один класс.
Ну так это длл. Метод чтения я вынес в отдельную библиотеку классов длл
Цитата Сообщение от Usaga Посмотреть сообщение
В самом методе, как и в остальных, куча копипасты, которую можно или вынести в отдельные методы или в виде общей части описать после switch, в котором только формировать параметры для оставшейся части.
Куча одинаковых строковых литералов. Можно было бы вынести их в виде констант.
Куча избыточной конкатенации строк. Да и получаемые так строки не используются само по себе, а нужны только для определения факта наличия такой же в виде подстроки в другой строке. Можно было бы заранее сформировать таблицу данный "опорных" строк и переиспользовать сколько душе угодно, а не загаживать heap мусором.
Осознайте уже, что строка - всего лишь массив символов (char[]) - его можно перебирать и анализировать вдоль и поперёк не порождая 100500 ненужных подстрок.
И когда код пишите, можно по нему глазами пробежаться для проверки наличия полностью повторяющихся фрагментов. Если таковые есть - выносите в отдельные методы или выделяйте общую часть иным образом.
Наличие кучи параметров раз за разом передаваемых в разные методы - признак того, что они являются частью чего-то большего, что можно было бы завернуть в класс или структуру.
Ну так может ты сделаешь аналог но чтобы также работал. Что до переменных с пометкой ref то естественно. Сама функция чтения парсинга и записи файла выведена в отдельную длл. А значения кооторые возвращаются в массивы хранятсЯ в классе формы

Добавлено через 16 секунд
Цитата Сообщение от Usaga Посмотреть сообщение
Судя по тому, как метод LoadTDMASM принимает параметры, по их количеству, можно сделать вывод, что в приложение просится ещё один класс.
Ну так это длл. Метод чтения я вынес в отдельную библиотеку классов длл
Цитата Сообщение от Usaga Посмотреть сообщение
В самом методе, как и в остальных, куча копипасты, которую можно или вынести в отдельные методы или в виде общей части описать после switch, в котором только формировать параметры для оставшейся части.
Куча одинаковых строковых литералов. Можно было бы вынести их в виде констант.
Куча избыточной конкатенации строк. Да и получаемые так строки не используются само по себе, а нужны только для определения факта наличия такой же в виде подстроки в другой строке. Можно было бы заранее сформировать таблицу данный "опорных" строк и переиспользовать сколько душе угодно, а не загаживать heap мусором.
Осознайте уже, что строка - всего лишь массив символов (char[]) - его можно перебирать и анализировать вдоль и поперёк не порождая 100500 ненужных подстрок.
И когда код пишите, можно по нему глазами пробежаться для проверки наличия полностью повторяющихся фрагментов. Если таковые есть - выносите в отдельные методы или выделяйте общую часть иным образом.
Наличие кучи параметров раз за разом передаваемых в разные методы - признак того, что они являются частью чего-то большего, что можно было бы завернуть в класс или структуру.
Ну так может ты сделаешь аналог но чтобы также работал. Что до переменных с пометкой ref то естественно. Сама функция чтения парсинга и записи файла выведена в отдельную длл. А значения кооторые возвращаются в массивы хранятсЯ в классе формы
0
Эксперт .NET
 Аватар для Usaga
14819 / 9597 / 1369
Регистрация: 21.01.2016
Сообщений: 36,144
04.08.2017, 03:16
Alexandr_7, уж извини, но я рассчитываю, что ты самостоятельно способен в своей писанине распознать одинаковые фрагменты кода и вынести их в отдельные методы. Если нет, то и париться тут «наведением порядка» особого смысла не имеет.
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
04.08.2017, 13:03  [ТС]
Уменьшить код не усложняя его у меня врядле получится. Если вынести в отдельные методы то кода только больше станет. Ну swith я могу вынести как отдельный метод. Но все переписать даже не знаю как быть. Можешь хотябы сказать порядок действий чтобы облегчить код как в плане выполнения так и вплане чтоб это меньше строк занимала.
0
 Аватар для RunningMan
278 / 186 / 75
Регистрация: 12.04.2017
Сообщений: 1,088
Записей в блоге: 2
04.08.2017, 13:37
Alexandr_7, для кого-то же это писали
Архитектура ПО в WinForms (FAQ & HowTo).
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
06.08.2017, 15:14  [ТС]
Так. Ну вот функция парсинга строки
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
static string GetStringAndSize(string aStr, out int aSizeStr)
        {
            aSizeStr = aStr.Length;
            return aStr.ToLower();
        }
 
        static int StrIndexOf(string aStr, string aValue)
        {
            return aStr.ToLower().IndexOf(aValue.ToLower());
        }
 
        static string ParsingScripts(string aScript, string aStartPS, string aEndPS)
        {
            var i1 = StrIndexOf(aScript, GetStringAndSize(aStartPS, out var l1));
            var i2 = StrIndexOf(aScript, GetStringAndSize(aStartPS, out var l2));
            return aScript.Substring(i1 + l1, i2 - (i1 + l1));
        }
Но проблема в том что нужно парсить следующую строку как найдена вот эта
C#
1
if (StrIndexOf(strRead, aDinasty + "Begins:") >= 0)
или вот это
C#
1
if (StrIndexOf(strRead, aDinasty + "M" + i.ToString() + ":") >= 0)
Есть у кого идеи как это парсить используя минимум кода. Но обязательно все должно быть разложено по полочкам
aTDMGreeting = ...Begins:
aTDMBriefing[n] = ...Mn:
aTDMAdvice[n] = ...MnAdvice:
aTDMVictory[n] = ...MnComp:
aTDMDefeat[n] = ...MnFail:
Есть у кого идеи как это сделать не используя очень много кода
Вот файл скрипта:
dialogs_hack_RUS.zip
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
07.08.2017, 15:21  [ТС]
Хотя я знаю как облегчить код но для этого не подходит метод построчного чтения
Для этого сначало весь текст нужно загрузить в List<string>
Кто знает как это сделать?

Добавлено через 15 секунд
Хотя я знаю как облегчить код но для этого не подходит метод построчного чтения
Для этого сначало весь текст нужно загрузить в List<string>
Кто знает как это сделать?
0
 Аватар для Alexandr_7
87 / 22 / 6
Регистрация: 29.12.2015
Сообщений: 1,904
15.08.2017, 05:35  [ТС]
И так. Я уменьшил код
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
        private string GetTextOfScript(string sScript, string ParamParsing_1, string ParamParsing_2)
        {
            return sScript.Substring(
                sScript.ToLower().IndexOf(ParamParsing_1.ToLower()) + ParamParsing_1.Length, 
                sScript.ToLower().IndexOf(ParamParsing_2) - (sScript.ToLower().IndexOf(ParamParsing_1.ToLower()) + ParamParsing_1.Length));
        }
 
        private void LoadDialogsMentats(string aFullName)
        {
            string[] strReads = File.ReadAllLines(aFullName, Encoding.GetEncoding(1251));
            string[] sArrayDinasty = { "Hark", "Atr", "Ord", "Sard", "Frem" };
            var constScriptPars_2 = "dc.b '";
            var constScriptPars_3 = "',0";
 
            for (int a = 0; a < strReads.Length; a++)
                for (int i = 0; i < 5; i++)
                {
                    var constScriptPars_1 = sArrayDinasty[i] + "Begins:";
                    if (strReads[a].ToLower().IndexOf(constScriptPars_1.ToLower()) >= 0)
                        textDMGreeting[i] = GetTextOfScript(strReads[a + 1], constScriptPars_2, constScriptPars_3);
                    for (int j = 0; j < 10; j++)
                    {
                        constScriptPars_1 = sArrayDinasty[i] + "M" + j.ToString() + ":";
                        if (strReads[a].ToLower().IndexOf(constScriptPars_1.ToLower()) >= 0)
                            textDMBriefing[i, j] = GetTextOfScript(strReads[a + 1], constScriptPars_2, constScriptPars_3);
                        constScriptPars_1 = sArrayDinasty[i] + "M" + j.ToString() + "Comp:";
                        if (strReads[a].ToLower().IndexOf(constScriptPars_1.ToLower()) >= 0)
                            textDMVictory[i, j] = GetTextOfScript(strReads[a + 1], constScriptPars_2, constScriptPars_3);
                        constScriptPars_1 = sArrayDinasty[i] + "M" + j.ToString() + "Fail:";
                        if (strReads[a].ToLower().IndexOf(constScriptPars_1.ToLower()) >= 0)
                            textDMDefeat[i, j] = GetTextOfScript(strReads[a + 1], constScriptPars_2, constScriptPars_3);
                        constScriptPars_1 = sArrayDinasty[i] + "M" + j.ToString() + "Advice:";
                        if (strReads[a].ToLower().IndexOf(constScriptPars_1.ToLower()) >= 0)
                            textDMAdvice[i, j] = GetTextOfScript(strReads[a + 1], constScriptPars_2, constScriptPars_3);
                    }
                }
        }
Как сделать его еще меньше не знаю. Точнее хотелось бы избавиться от повторяющегося кода вынося его в отдельный метод но прийдется методу практически все параметры передовать. Даже не знаю есть ли в этом смысл?

Добавлено через 16 секунд
И так. Я уменьшил код
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
        private string GetTextOfScript(string sScript, string ParamParsing_1, string ParamParsing_2)
        {
            return sScript.Substring(
                sScript.ToLower().IndexOf(ParamParsing_1.ToLower()) + ParamParsing_1.Length, 
                sScript.ToLower().IndexOf(ParamParsing_2) - (sScript.ToLower().IndexOf(ParamParsing_1.ToLower()) + ParamParsing_1.Length));
        }
 
        private void LoadDialogsMentats(string aFullName)
        {
            string[] strReads = File.ReadAllLines(aFullName, Encoding.GetEncoding(1251));
            string[] sArrayDinasty = { "Hark", "Atr", "Ord", "Sard", "Frem" };
            var constScriptPars_2 = "dc.b '";
            var constScriptPars_3 = "',0";
 
            for (int a = 0; a < strReads.Length; a++)
                for (int i = 0; i < 5; i++)
                {
                    var constScriptPars_1 = sArrayDinasty[i] + "Begins:";
                    if (strReads[a].ToLower().IndexOf(constScriptPars_1.ToLower()) >= 0)
                        textDMGreeting[i] = GetTextOfScript(strReads[a + 1], constScriptPars_2, constScriptPars_3);
                    for (int j = 0; j < 10; j++)
                    {
                        constScriptPars_1 = sArrayDinasty[i] + "M" + j.ToString() + ":";
                        if (strReads[a].ToLower().IndexOf(constScriptPars_1.ToLower()) >= 0)
                            textDMBriefing[i, j] = GetTextOfScript(strReads[a + 1], constScriptPars_2, constScriptPars_3);
                        constScriptPars_1 = sArrayDinasty[i] + "M" + j.ToString() + "Comp:";
                        if (strReads[a].ToLower().IndexOf(constScriptPars_1.ToLower()) >= 0)
                            textDMVictory[i, j] = GetTextOfScript(strReads[a + 1], constScriptPars_2, constScriptPars_3);
                        constScriptPars_1 = sArrayDinasty[i] + "M" + j.ToString() + "Fail:";
                        if (strReads[a].ToLower().IndexOf(constScriptPars_1.ToLower()) >= 0)
                            textDMDefeat[i, j] = GetTextOfScript(strReads[a + 1], constScriptPars_2, constScriptPars_3);
                        constScriptPars_1 = sArrayDinasty[i] + "M" + j.ToString() + "Advice:";
                        if (strReads[a].ToLower().IndexOf(constScriptPars_1.ToLower()) >= 0)
                            textDMAdvice[i, j] = GetTextOfScript(strReads[a + 1], constScriptPars_2, constScriptPars_3);
                    }
                }
        }
Как сделать его еще меньше не знаю. Точнее хотелось бы избавиться от повторяющегося кода вынося его в отдельный метод но прийдется методу практически все параметры передовать. Даже не знаю есть ли в этом смысл?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.08.2017, 05:35

Перенос текста, на другую строку
Есть такой текст HI&lt;/p&gt; а нужно получить такой HI &lt;/p&gt; Как это реализовать? P.S. это одна строка.

Как удалить ВСЕ пробелы из String?
В общем, есть строка. Надо удалить все пробелы. Но как?!

Удалить из строки все пробелы, а результат записать в другую
С клавиатуры вводится строка. Определить: 1) сколько в ней букв а; 2)встречается ли буквосочетание cd; 3) удалить из строки все...

Как в меню сделать перенос текста на другую строку?
Добрый день всем! Подскажите пожалуйста, как в меню сделать перенос текста на другую строку? Пробовал &lt;br&gt;. В горизонтальном...

Удалить все лишние пробелы. Удалить из него первое слово. Дописать в тот же файл измененую строку
я создал текстовый файл теперь нужно удалить все лишние пробелы. Удалить из него первое слово. Дописать в тот же файл измененную строку.


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru