16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
1

Поиск текста в скобках и замена на другой в том же месте

21.08.2013, 13:17. Показов 2578. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите пожалуйста

C#
1
str_line = str_line.Replace("1", line_b); // я понял
это мне знакомо - я уже переменял
вот такое что выдумываю

моя цель: существует текст
"Masha was on "Titanium"the highway and was"Venadium" sucking on her candy-"Aurum"attacked"
спасибо вы помогли
написали код вынимания текста скобок - (условный код , и цикличный)
я получил вот такое
"Titanium" "Venadium" "Aurum"
потом после получения текста в скобках, в строке , я изменяю его - делаю совсем другим вот таким пишу
"I was dog, I love her" "you know when you take" "Rostov is bathed in a bathtub, and she migrated train"
и я хочу вернуть его , на то самое место где взял

то есть должно получиться вот так
"Masha was on "I was dog, I love her"the highway and was"you know when you take" sucking on her candy-"Rostov is bathed in a bathtub, and she migrated train"attacked"

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
string str_line="Masha was on "Titanium"the highway and was"Venadium" sucking on her candy-"Aurum"attacked";
int i = 0, flag = 0, ind = 0;
            string str = str_line, temp = "";
            char skobka = '"';
            for (i = 0; i < str.Length; i++)
            {
                if (str[i] == skobka)
                {
                    flag++;
                    if (flag % 2 == 0)
                    {
                        temp = temp + " " + str.Substring(ind, i - ind) + skobka;
                    }
                    else
                    {
                        ind = i;
                    }
                }
            }
Console.WriteLine(temp); // выймет текст -
 
/*
тут код где я изменяю текст temp  этим  line_changed=Console.ReadLine(); 
*/
 
 
/*
тут код он вернет temp назад в скобки 
 
insert Replese пробывал , цикл туда пихал , может Split  
для insert
string find = Regex.Replace(str_line, ""(.*?)"", ""1"", RegexOptions.IgnoreCase); 
где я 1 мог бы заменить на текст temp 
string find=find.Replace(""1"",temp); 
но тут не то нужен цикл forech или for для temp 
*/
не вышло реализовать такое
химичил не выходит

Добавлено через 11 часов 28 минут
вот изготовил но столкнулся с проблемой цикла
оно выводит по очереди - а мне надо не так
Masha was on "Titanium"the highway and was"Venadium" sucking on her candy-"Aurum"attacked- это оригинальная

"Titanium" "Venadium" "Aurum" -получил (button1_Click) кнопкай

"1234" "4567" "5666" - изменил в richTextBox2.Text и отправил в line_changed

вот что получил кнопкай (button2_Click) - в richTextBox3.Text

Masha was on "1234"the highway and was"" sucking on her candy-""attacked
Masha was on ""the highway and was"4567" sucking on her candy-""attacked
Masha was on ""the highway and was"" sucking on her candy-"5666"attacked


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
        private void button1_Click(object sender, EventArgs e)
        {
 
            
            string str_line;
            str_line = richTextBox1.Text;
            int i = 0, flag = 0, ind = 0;
            string str = str_line, temp = "";
            char skobka = '"';
            for (i = 0; i < str.Length; i++)
            {
                if (str[i] == skobka)
                {
                    flag++;
                    if (flag % 2 == 0)
                    {
                        temp = temp + " " + str.Substring(ind, i - ind) + skobka;
                    }
                    else
                    {
                        ind = i;
                    }
                }
            }
            richTextBox2.Text = temp;
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            string line_changed,str_line;
            str_line = richTextBox1.Text;//оригинальный текст 
            
            //изменяем тут текст, и отправляем в line_changed
            line_changed = richTextBox2.Text;
 
            string pattern = """";
            string pattern2 = ""(.*?)"";
            string shakespeare; //замена ALL
 
      
            string find = Regex.Replace(str_line, ""(.*?)"", """", RegexOptions.IgnoreCase);
 
            string text = find,text2=line_changed;
            int i,i2;
            MatchCollection matches;
            MatchCollection matches2;
            Regex defaultRegex = new Regex(pattern);
            Regex defaultRegex2 = new Regex(pattern2);
            matches = defaultRegex.Matches(text);
            matches2 = defaultRegex2.Matches(text2);
            for (int ctr = 1; ctr <= matches.Count && ctr <= matches2.Count; ctr++)
            {
                i = matches[ctr - 1].Index;
                i = i + 1;
                i2 = matches2[ctr - 1].Index;
                
                string edit = matches2[ctr - 1].Value;
                edit = edit.Replace(""", "");
 
                //MessageBox.Show(i.ToString()+" "+i2.ToString());
                
                shakespeare = text.Insert(i, edit);
                richTextBox3.Text = shakespeare;            
            }
помогите получить только так
Masha was on "1234"the highway and was"4567" sucking on her candy-"5666"attacked

Добавлено через 7 секунд
вот изготовил но столкнулся с проблемой цикла
оно выводит по очереди - а мне надо не так
Masha was on "Titanium"the highway and was"Venadium" sucking on her candy-"Aurum"attacked- это оригинальная

"Titanium" "Venadium" "Aurum" -получил (button1_Click) кнопкай

"1234" "4567" "5666" - изменил в richTextBox2.Text и отправил в line_changed

вот что получил кнопкай (button2_Click) - в richTextBox3.Text

Masha was on "1234"the highway and was"" sucking on her candy-""attacked
Masha was on ""the highway and was"4567" sucking on her candy-""attacked
Masha was on ""the highway and was"" sucking on her candy-"5666"attacked


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
        private void button1_Click(object sender, EventArgs e)
        {
 
            
            string str_line;
            str_line = richTextBox1.Text;
            int i = 0, flag = 0, ind = 0;
            string str = str_line, temp = "";
            char skobka = '"';
            for (i = 0; i < str.Length; i++)
            {
                if (str[i] == skobka)
                {
                    flag++;
                    if (flag % 2 == 0)
                    {
                        temp = temp + " " + str.Substring(ind, i - ind) + skobka;
                    }
                    else
                    {
                        ind = i;
                    }
                }
            }
            richTextBox2.Text = temp;
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            string line_changed,str_line;
            str_line = richTextBox1.Text;//оригинальный текст 
            
            //изменяем тут текст, и отправляем в line_changed
            line_changed = richTextBox2.Text;
 
            string pattern = """";
            string pattern2 = ""(.*?)"";
            string shakespeare; //замена ALL
 
      
            string find = Regex.Replace(str_line, ""(.*?)"", """", RegexOptions.IgnoreCase);
 
            string text = find,text2=line_changed;
            int i,i2;
            MatchCollection matches;
            MatchCollection matches2;
            Regex defaultRegex = new Regex(pattern);
            Regex defaultRegex2 = new Regex(pattern2);
            matches = defaultRegex.Matches(text);
            matches2 = defaultRegex2.Matches(text2);
            for (int ctr = 1; ctr <= matches.Count && ctr <= matches2.Count; ctr++)
            {
                i = matches[ctr - 1].Index;
                i = i + 1;
                i2 = matches2[ctr - 1].Index;
                
                string edit = matches2[ctr - 1].Value;
                edit = edit.Replace(""", "");
 
                //MessageBox.Show(i.ToString()+" "+i2.ToString());
                
                shakespeare = text.Insert(i, edit);
                richTextBox3.Text = shakespeare;            
            }
помогите получить только так
Masha was on "1234"the highway and was"4567" sucking on her candy-"5666"attacked
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.08.2013, 13:17
Ответы с готовыми решениями:

Поиск и замена текста на другой макрос
Добрый вечер всем!! Не могли бы вы подсказать решение проблемы Текст состоящий из множеств...

Вывод строки текста в одном и том же месте
народ, мне нужно что бы программа выводила слово &quot;программа&quot; 15 раз в одном и том же месте. как это...

Канвас, по клику происходит вывод текста (координаты) в том месте где был клик
Канвас, по клику происходит вывод текста(координаты) в том месте где был клик. Сделал, но...

Замена текста в определенном месте текстовой строки - сразу для нескольких ячеек
Здравствуйте, форумчане. У меня появился такой вопрос. Есть макрос, который извлекает...

14
Заблокирован
25.08.2013, 00:00 2
Погуглите насчет "обратной польской записи".

Мои красные глаза столько красного кода просто не могут разобрать(.
0
79 / 79 / 11
Регистрация: 29.08.2013
Сообщений: 263
30.08.2013, 10:12 3
Помоему тут лучше использовать регулярные вырожения. Задать шаблон для поиска и по этому шаблону Вы можите как получить коллекцию совпадений так и произвести замену. Правда не совсем понятно как,зачем и к чему такие замены. Может я не особо внимательно читал,все запутанно. Не ясен момент с заменой. Пара слово-синоним зарание известны или нет,или в каком месте их задавать. Дома есть рабочий проэкт программы для замены слов в тексте по регуляркам,писал для себя , но могу дать посмотреть. Как она работает. Задается шаблон для поиска и слово на которое надо заменить...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
string pat = tatTextBox.Text;
string rep = repTextBox.Text;
Regex regex = new Regex(pat);
if(regex.isMatch(richTextBox1.Text.toString())
 {
 foreach (Match m in regex.Matches(richTextBox1.Text.toString())
{
//выводим совпадения
statusRichTB.Text += m.Index + "=>" + m.Value + "\r\n";
//дальше можно заменить
string result = regex.Replace(richTextBox1.Text.toString(), rep);
}
 
 }
Это для примера , а для справки msdn.microsoft.com/ru-ru/library/system.text.regularexpressions.regex.aspx
1
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
01.09.2013, 23:23  [ТС] 4
ваш код симпатичен Dexa,
вот я его в роди как - расмотрел - что то понял
работает как вот у меня - но опять же столкнулся с проблемой - дублирует гад при замене текст -как возвращаешь его назад откуда взял - сам увидишь
скапируй код попробуй кнопку с трема-
richTextBox1.Text
richTextBox2.Text
richTextBox3.Text

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
 private void button2_Click(object sender, EventArgs e)
        {
            string pat = "";//""(.*?)""; //tatTextBox.Text;
            string rep = ""; //repTextBox.Text;
            string texe_1;
            string result = "";
            texe_1 = richTextBox1.Text.ToString();
            //rep = texe_1;
            rep = richTextBox2.Text;
            Regex regex = new Regex(pat, RegexOptions.RightToLeft);
            if (regex.IsMatch(pat))
            {
                //MessageBox.Show(rep);
                //string[] substrings = pat.Split('"');
                foreach (Match m in regex.Matches(rep))
                {
                    
                    //выводим совпадения
                    //richTextBox4.Text +=  m.Value + "\r\n";
                    //дальше можно заменить
 
                    //int i = m.Index;
                    //int i2 = rep.IndexOf(""");
                    
                         result = regex.Replace(texe_1, m.Value);
                        richTextBox3.Text = result;
                         //StreamWriter sw = new StreamWriter("c:\\name.txt");
                         //sw.WriteLine(result);
                         //sw.Close();
                    
                }
                
            }
 
        }
Добавлено через 9 минут
можете подсказать как избавиться
от єтого дублирвания

как возвращаю текст от тех скобок
все таки идея проста - но блин как же трудно придумать как єто сделать
мне нужно именно чтоб она так делала :

аывап"sdfsf" sdfsf "sdfdffs"ddddf"ssdf"sddf - допустим текст

"sdfsf" "sdfdffs" "ssdf" - получить текст в скобок что - все таки удалось , из текста

"sdf2sf213" "sd123вфаfdffs" "ssфывdf" - изменяем текст его в richTextBox2.Text , видите добавил в скобках фигню

аывап"sdf2sf213" sdfsf "sd123вфаfdffs"ddddf"ssфывdf"sddf - возвращаем из richTextBox2.Text дамой откуда взяли

думаю тут все понятно что - я хочу добиться просто - но не выходит
0
79 / 79 / 11
Регистрация: 29.08.2013
Сообщений: 263
02.09.2013, 11:58 5
Цитата Сообщение от GENDALF_ISTARI Посмотреть сообщение
думаю тут все понятно что - я хочу добиться просто - но не выходит

Если бы было понятно то я бы уже написал готовый код. Начнем попорядку и без всяких там "sdf2sf213" "sd123вфаfdffs" "ssфывdf" .
Допустим есть текст. :

Бессмысленный набор слов "первое" , "второе" и "третие" , а еще может быть и "четыре" и больше.

Теперь объясните,слов на которые надо заменить столькоже сколько тех что в кавычках или оно одно и на это одно слово надо заменить все совпадения? Или может ко всем этим словам надо что-то дописать чтоб было например


Бессмысленный набор слов "первое слово" , "второе слово" и "третие слово" , а еще может быть и "четыре слова" и больше.

Тоесть везде дописали 'слово'. Я уверен что там все проще чем вам кажется,но надо знать что конкретно нужно сделать.
1
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
03.09.2013, 21:31  [ТС] 6
мне нужно не дописать
а изменить все в скобках к примеру вот текст , и он может продолжаться дальше, и текст не конечен

шла Маша"первое" по шоссе "второе" , и сосала "третье" чупа-чупсс..........

из этого текста , мне нужно получить
сперва - текст в скобках - что удалось

"первое" "второе" "третье"

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

шла Маша"" по шоссе "" , и сосала "" чупа-чупсс.......... - это в том случаи когда "" "" ""

вот пример еще

шла Маша"1234" по шоссе "куку" , и сосала "кутузов" чупа-чупсс...- это в том случаи когда "1234" "куку" "кутузов"


то есть программа имеет две кнопки , и два чекбокса, или три чекбокса , первый чекбокс имеет текст оригинальный

шла Маша"первое" по шоссе "второе" , и сосала "третье" чупа-чупсс..........

первая кнопка получает текст в скобках - и направляет его вместе с скобками в второй чекбокс2 - что уже есть

"первое" "второе" "третье" - это во втором чекбоксе2

в этом чекбоксе2 - я изменяю текст в скобках - как угодно но не затрагивая скобки строго - к примеру так изменил без разницы

"тотем" "анубис" "555"

вторая кнопка - из чекбокса2 заберает этот текст - и возвращает
или в первый чекбокс1 или в третий чекбокс3 -без разницы - главное чтоб оно просто вернулось назад - но уже с другим текстом

шла Маша"тотем" по шоссе "анубис" , и сосала "555" чупа-чупсс..........

0
79 / 79 / 11
Регистрация: 29.08.2013
Сообщений: 263
03.09.2013, 21:46 7
так понятней. В током случае,самый верный способ это после выборки слов в тексте остается у нас regex.Matches которая содержит массив, таких массивов можно получить два,хотя я бы слова найденыши в тотже грид занес,ну это ладно. Дальше как удобно или через string.replace меняешь подстроки в цикле,тоесть match1[0] меняешь на match2[0] и так по порядку , можно и регексами.
1
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
03.09.2013, 22:38  [ТС] 8
про масивы думал из начально - но не мог понять миханизм чтения из них
и как изьять то что записал в масиве
вот более понятно фото вот - вот такая прога
(удалено модератором)

вот что удалось первой кнопкой получить - и работает она стлашним текстом нормально все
(удалено модератором)

вот я хочу что сделать изменить в чекбоксе текст в скобках
(удалено модератором)

и очень бы хотелось кнопка та вторая не то делает как на фото -
но на фото хотелось чтоб она так делала Чекбокс3 - получил текст вернул

(удалено модератором)
вот и все


Добавлено через 2 минуты
про масивы думал из начально - но не мог понять миханизм чтения из них
и как изьять то что записал в масиве
вот более понятно фото вот - вот такая прога
(удалено модератором)

вот что удалось первой кнопкой получить - и работает она стлашним текстом нормально все
(удалено модератором)

вот я хочу что сделать изменить в чекбоксе текст в скобках
(удалено модератором)

и очень бы хотелось кнопка та вторая не то делает как на фото -
но на фото хотелось чтоб она так делала Чекбокс3 - получил текст вернул

(удалено модератором)
вот и все
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
28040 / 15773 / 982
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
03.09.2013, 22:41 9
прикрепляйте изображения к форуму через расширенный режим - кнопка со скрепкой.
1
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
03.09.2013, 22:46  [ТС] 10
вот такая она будет
Миниатюры
Поиск текста в скобках и замена на другой в том же месте   Поиск текста в скобках и замена на другой в том же месте   Поиск текста в скобках и замена на другой в том же месте  

Поиск текста в скобках и замена на другой в том же месте  
0
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
03.09.2013, 22:50  [ТС] 11
это такая она приметивная
но вид ей измениться как только код возврата текста
будет
напишу где она будет болтаться
0
79 / 79 / 11
Регистрация: 29.08.2013
Сообщений: 263
04.09.2013, 07:33 12
Вот тебе фрагмент кода из не самого маленького проэкта,там я использовал датагрид , если вдуматься то можно и переписать под себя,заносиш в грид строки с наидеными словами , а рядом надо будет написать синоним. Тестируи.
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
        private void Rechange()
        {
            if (dataGridView1.Rows.Count == 0)
            {
                MessageBox.Show("Пустая база данных для поиска синонимов", "Облом");
            }
            string pattern = "";
            string sinonim = "";
            memo = richTextBox1.Text.ToString();
            richTextBox1.Text = richTextBox1.Text;
            foreach (DataGridViewRow str in dataGridView1.Rows)
            {
                if (str.Cells[1].Value != null)
                    sinonim = str.Cells[1].Value.ToString();
                if (str.Cells[2].Value != null)
                    pattern = str.Cells[2].Value.ToString();
                if (sinonim != "" && pattern != "")
                {
                    
                    richTextBox1.Text = Regex.Replace(richTextBox1.Text.ToString(), pattern, sinonim, RegexOptions.IgnoreCase);
                    int StartIndex =0;
                    int count = 0;
                    Color nowColor = richTextBox1.SelectionColor;
                    while (StartIndex < richTextBox1.Text.LastIndexOf(sinonim))
                    {
                        richTextBox1.Find(sinonim,StartIndex,richTextBox1.TextLength,RichTextBoxFinds.None);
                        richTextBox1.SelectionColor = Color.DarkCyan;
                       StartIndex= richTextBox1.Text.IndexOf(sinonim,StartIndex) +1;
                       count++;
                    }
                    richTextBox1.SelectionColor = nowColor;
                    statusBar2.Text = "Замена произведена .  Найдено " + count + " слов.";
 
 
 
 
                }
                else
                {
                    MessageBox.Show("Проверте введенные данные в таблице замены");
                }
 
            }
        }
1
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
06.09.2013, 01:30  [ТС] 13
Черт Dexa это база данных
как тогда с richTextBox2.Text текст "five", "six", "seven", "eight" что там, внести в dataGridView1
лучше я солюшен Project скину - не вдумаюсь как работает - как происходит разделение

у меня ошибка дальше не идет
база данных представляет с собой таблицу с уникальными ключами связками
я в ней не очень :black_eye.:

мудрил - толи базу там подключить создать ORCL
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
this.dataGridView1.Rows.Add("five", "six", "seven", "eight");
            string memo = "";
            //string dataGridView1 = "";
            if (dataGridView1.Rows.Count == 0)
            {
                MessageBox.Show("Пустая база данных для поиска синонимов", "Облом");
            }
            string pattern = "\"(.*?)\"";
            string sinonim = "h";
            //sinonim = richTextBox2.Text;
            memo = richTextBox1.Text.ToString();
            richTextBox1.Text = richTextBox1.Text;
            foreach (DataGridViewRow str in dataGridView1.Rows)
            {
                if (str.Cells[1].Value != null)
                    sinonim = str.Cells[1].Value.ToString();
                if (str.Cells[2].Value != null)
                    pattern = str.Cells[2].Value.ToString();
                if (sinonim != "" && pattern != "")
                {
 
                    richTextBox1.Text = Regex.Replace(richTextBox1.Text.ToString(), pattern, sinonim,
                                                      RegexOptions.IgnoreCase);
                    int StartIndex = 0;
                    int count = 0;
                    Color nowColor = richTextBox1.SelectionColor;
                    while (StartIndex < richTextBox1.Text.LastIndexOf(sinonim))
                    {
                        richTextBox1.Find(sinonim, StartIndex, richTextBox1.TextLength, RichTextBoxFinds.None);
                        richTextBox1.SelectionColor = Color.DarkCyan;
                        StartIndex = richTextBox1.Text.IndexOf(sinonim, StartIndex) + 1;
                        count++;
                    }
                    richTextBox1.SelectionColor = nowColor;
                    richTextBox3.Text = "Замена произведена .  Найдено " + count + " слов.";
 
 
 
 
                }
                else
                {
                    MessageBox.Show("Проверте введенные данные в таблице замены");
                }
 
            }
0
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
06.09.2013, 01:37  [ТС] 14
Вот Dexa
Вложения
Тип файла: rar WindowsFormsApplication4.rar (28.5 Кб, 9 просмотров)
0
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
06.09.2013, 01:43  [ТС] 15
Dexa я на Microsoft Visual Studio 2008 :black_eye.:
компилил на Framework 2.0
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2013, 01:43
Помогаю со студенческими работами здесь

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

Замена одного текста на другой
Есть текст &lt;li&gt;1~~2~~3&lt;/li&gt; Как заменить ~~ на li и закрыть его же

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

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

Поиск и замена текста
Всем добрый день. Интересует как можно создать поиск файла по названию, например test.mln...

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


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

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

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