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

Как получить текст между двумя символами, в отдельном окне изменить его и вернуть обратно на то же место?

05.11.2013, 00:17. Показов 4143. Ответов 16
Метки нет (Все метки)

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

Вот чтоб хотелось иметь
К примеру вы ввели текст

Tokin like trolls<graze> in the <meadow,> and grew <them> in a cave

две кнопки button
1) получить текст в отдельном окне между двама символами к примеру такие < >
<graze> <meadow,> <them>

2) отредактировать текст, как душе по желает
<graze555> <meadow, Helm> <th>

3) и вернуть его на законное место, назад от куда взяли
Tokin like trolls<graze555> in the <meadow, Helm> and grew <th> in a cave


HTML5
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
<html>
 
    <p>ТЕКСТ ИСТОЧНИК<br>
<textarea name="comment1" id="myTextarea1" cols="40" rows="3"></textarea>
</p>
    <head>
 
        <script type="text/javascript">
 
        
            var str=document.getElementById("myTextarea1").value;
;
            function count_rabbits1() 
            {
 
              alert(str)
 
            }
 
            
             function count_rabbits2() 
             {
 
               // 
 
            }
         </script>
 
    </head>
 
 
    <p>ТЕКСТ ПОЛУЧЕН (МЕЖДУ СИМВОЛАМИ)<br>
<textarea name="comment2" id="myTextarea2" cols="40" rows="3"></textarea>
</p>
    
    <body>
 
         <input type="button" onclick="count_rabbits1()" value="получить текст между символами"/>
         <input type="button" onclick="count_rabbits2()" value="вернуть текст назад в источник"/>
 
    </body>
 
</html>
Надеюсь кто ни будь
из верстальщиков подкинет код javascript
или иных инопланетных созданий
поможет землянам

решить проблему эту
чтоб закрыть эту тему

может это примитивно
но это геморрой
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2013, 00:17
Ответы с готовыми решениями:

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

Передать bitmap из одной формы, изменить его в другой и вернуть обратно. как?
public Create(Bitmap bmp) { InitializeComponent(); ...

Как сохранить содержимое буфера, изменить его, а потом вернуть всё обратно?
Собственно вопрос: как сохранить содержимое буфера, выполнить некоторые действия (используя буфер),...

Как составить регулярку для поиска между двумя символами? Например, между { и }, между [ и ]
Здравствуйте. Как составить регулярку между двумя знаками. Например между { и }, , {} и т д....

16
208 / 164 / 29
Регистрация: 11.09.2013
Сообщений: 445
05.11.2013, 00:25 2
Жбдыщ, инопланетные создания! Я - страж ветки по C#WinForms, и я не могу пропустить вас дальше! Коли же вы осмелитесь применить земные технологии, то могу предложить сей замечательный код:

C#
1
2
3
string s = "<MyString>";
string s1 = s.SubString(s.IndexOf('<'), s.IndexOf('>')); // MyString
s = s.Replace("<MyString>", "<MyNewString>");
1
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
06.11.2013, 23:39  [ТС] 3
При испытании кода sezada,
он оказался ограничен одним словом

а это не допустимо
потому что будут всякие слова тексты
применим C#WinForms
результаты теста кода
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            string s = richTextBox1.Text; //"<MyString>";
            string s1 = s.Substring(s.IndexOf('"'), s.IndexOf('"')); // MyString
            //s = s.Replace("<MyString>", "<MyNewString>");
            richTextBox2.Text = s1;
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            string s = richTextBox2.Text;
            //s = s.Replace("<MyString>", "<MyNewString>");
           // тут вообще нужно придумать цикл, или регулятор выражения возврата - и думаю условный
        }
    }
}
не годиться
Миниатюры
Как получить текст между двумя символами, в отдельном окне изменить его и вернуть обратно на то же место?  
0
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
06.11.2013, 23:56  [ТС] 4
А теперь то что нужно другой код , что публиковался

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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
 
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            int i = 0, flag = 0, ind = 0;
            string str = richTextBox1.Text, 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 s = richTextBox2.Text;
            // возврат текста не решон 
            // писали можно через DataGrid , подключения баз 
            // но сложно как то ((((((
 
 
        }
    }
}
нужен код возврата текста
Миниатюры
Как получить текст между двумя символами, в отдельном окне изменить его и вернуть обратно на то же место?  
0
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
07.11.2013, 00:02  [ТС] 5
Хреновый код возврата текста, что сам сочинил
он повторяет текст что не допустимо
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
            string line_changed, str_line;
            str_line = richTextBox1.Text; //оригинальный текст 
 
            //изменяем тут текст, и отправляем в line_changed
            line_changed = richTextBox2.Text;
 
            string pattern = "\"(.*?)\""; //"\"\"";
            string pattern2 = "\"(.*?)\"";
            string shakespeare; //замена ALL
            string result = "", temp = "";
            string edit1;
            string edit2;
 
            //string find = Regex.Replace(str_line, "\"(.*?)\"", "\"\"", RegexOptions.IgnoreCase);
 
            string text = str_line, text2 = line_changed;
            int i, i2, flag = 0;
            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++)
            {
 
                edit1 = matches[ctr - 1].Value;
                edit2 = matches2[ctr - 1].Value;
                
                string result=str_line.Replace(edit1,edit2);
 
                richTextBox3.Text = result;
 
 
            }
Разрешите проблему нуждаемся в созидание
0
208 / 164 / 29
Регистрация: 11.09.2013
Сообщений: 445
07.11.2013, 00:19 6
ну дык преобразуйте код в нужный Вам вид. в примере Вы показали хмл-файл, вот я для него и кинул пример (хотя есть специальные классы для работы с ними). в Вашем случае подойдет следующее:

C#
1
2
3
4
5
6
7
string[] temp = s.Split(' '); // получим массив слов
StringBuilder ToAdd = new StringBuilder(); // сюда будет складывать найденное
foreach (string st in temp)
    if (st.StartsWith("\"") && st.EndsWith("\""))
        ToAdd.Append(st);
textBox2.Text = ToAdd.ToString();
textBox2.Text.CopyTo(0, bckupString, 0, textBox2.Text.Lenght); // сохраним также для последующего возвраща
следующий код вернет "обратно" в s измененный код

C#
1
2
3
4
5
6
7
string[] bckup = bckupString.Split(' ');
string[] newS = textBox2.Text.Split(' ');
if (bckup.Lenght != newS.Lenght)
    return; // ошибка
 
for (int i = 0; i < bckup.Lenght; i++)
    s = s.Replace(bckup[i], newS[i]);
1
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
07.11.2013, 20:08  [ТС] 7
Не до конца понятно bckupString ошибка sezada

думаю правильно понял вашу технологию textBox1.Text , textBox2.Text , необходимы
для хранения индексов, я их добавил

это те самые тексты это richTextBox1.Text , и richTextBox2.Text

для хранения индексов используете
bckupString - не ясно
требует как символ char [] даже как бы массив

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
private void button2_Click(object sender, EventArgs e)
        {
            string bckupString="";
            string s="";
            s = richTextBox2.Text; // ВХОД 
 
            string[] temp = s.Split(' '); // получим массив слов
            StringBuilder ToAdd = new StringBuilder(); // сюда будет складывать найденное
            foreach (string st in temp)
                if (st.StartsWith(""") && st.EndsWith("""))
                    ToAdd.Append(st);
            textBox2.Text = ToAdd.ToString();
            textBox2.Text.CopyTo(0, bckupString, 0, textBox2.Text.Length); // сохраним также для последующего возвраща
 
            string[] bckup = bckupString.Split(' ');
            string[] newS = textBox2.Text.Split(' ');
            if (bckup.Length != newS.Length)
                return; // ошибка
 
            for (int i = 0; i < bckup.Length; i++)
            s = s.Replace(bckup[i], newS[i]);
 
            richTextBox1.Text = s; // ВЫХОД
        }
На фото видно все что не ясно
Миниатюры
Как получить текст между двумя символами, в отдельном окне изменить его и вернуть обратно на то же место?  
0
208 / 164 / 29
Регистрация: 11.09.2013
Сообщений: 445
07.11.2013, 20:34 8
ну так и объявите его как массив char[]
0
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
09.11.2013, 01:44  [ТС] 9
вот результат объявлений

char[] bckupString = ''; // не пойму что тулить с чем вязать

если его обьявить масивом то Split стает ошыбочным

код
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
 private void button1_Click(object sender, EventArgs e)
        {
            
            string s = "";
            s = richTextBox2.Text; // ВХОД 
 
            string[] temp = s.Split(' '); // получим массив слов
            char[] bckupString = '';  //
            StringBuilder ToAdd = new StringBuilder(); // сюда будет складывать найденное
            foreach (string st in temp)
                if (st.StartsWith("\"") && st.EndsWith("\""))
                    ToAdd.Append(st);
            textBox2.Text = ToAdd.ToString();
            textBox2.Text.CopyTo(0, bckupString, 0, textBox2.Text.Length); // сохраним также для последующего возвраща
 
            string[] bckup = bckupString.Split(' ');
            string[] newS = textBox2.Text.Split(' ');
            if (bckup.Length != newS.Length)
                return; // ошибка
 
            for (int i = 0; i < bckup.Length; i++)
                s = s.Replace(bckup[i], newS[i]);
 
            richTextBox1.Text = s; // ВЫХОД
        }
На фото результат

получаеться такое string обьявишь стает ошибочный bckupString
обьявишь char[] стает ошибочный Split
палка с двух колес

нужна технология решить ей
Серые помогите
Миниатюры
Как получить текст между двумя символами, в отдельном окне изменить его и вернуть обратно на то же место?  
0
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
09.11.2013, 01:46  [ТС] 10
Даже хоть так выдумывай
Миниатюры
Как получить текст между двумя символами, в отдельном окне изменить его и вернуть обратно на то же место?  
0
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
09.11.2013, 01:58  [ТС] 11
Ну допустим возьмем
http://msdn.microsoft.com/ru-r... .110).aspx

то Split стает ошибочным, все равно
Миниатюры
Как получить текст между двумя символами, в отдельном окне изменить его и вернуть обратно на то же место?  
0
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
09.11.2013, 02:08  [ТС] 12
Вот проект
visual 2010 ultimatum
Framework 4.0
Вложения
Тип файла: zip WindowsFormsApplication1.zip (43.3 Кб, 2 просмотров)
0
208 / 164 / 29
Регистрация: 11.09.2013
Сообщений: 445
09.11.2013, 16:34 13
используйте конструктор string:

C#
1
string example = new string(new char[10]);
1
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
09.11.2013, 17:43  [ТС] 14
и снова радости много
не катит это тоже
C#
1
string bckupString = new string(new char[10]);
Смотри на фото
тоже само
что мне делать , не знаю
мнеб это решить
припешу я вас совместно к проге STR
Миниатюры
Как получить текст между двумя символами, в отдельном окне изменить его и вернуть обратно на то же место?  
0
208 / 164 / 29
Регистрация: 11.09.2013
Сообщений: 445
09.11.2013, 17:49 15
следите за типами данных. если написано, что там должен быть char[] - передавайте туда char[]. извините, но я не буду исправлять за вами каждую из сотни ошибок. в этой теме были рассмотрены почти все возможности работы со строками и символами. постарайтесь хоть немного подумать применить все это на практике сами
1
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
09.11.2013, 19:29  [ТС] 16
этот код делает другое
вынемает текст что рядом
но не в скобках
это хорошо
можно может как то туда впехнуть
richTextBox2.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
 private void button2_Click(object sender, EventArgs e)
        {
            int i = 0, flag = 0, ind = 0;
            string str = richTextBox1.Text, str1 = richTextBox2.Text, temp = "", temp1 = "",temp2="";
            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;
                    }
                }
            }
            richTextBox3.Text = temp;  
        }
0
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
11.11.2013, 01:04  [ТС] 17
Значет тема не закрыта
и актуальна
и ты меня пропустишь

мнеб решить эту проблему
яб склепал прогу
да перевел мод
да и дело с концом
где готовый код взять ??????
уже не мучатся
0
11.11.2013, 01:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.11.2013, 01:04
Помогаю со студенческими работами здесь

Нужно из определенного текста вырезать текст идущий между двумя заданными символами
Надеюсь поймете)):(

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

Получить новую строку, вставив между двумя символами исходной строки символ *
Дана строка. Получите новую строку, вставив между двумя символами исходной строки символ *....

Как вывести текст (сообщение), открывающееся в отдельном окне
Как в данном коде вывести текст,сообщение,открывающееся в отдельном окне. include &quot;win64ax.inc&quot; ...

Регулярные выражение. Получить текст, который находится между символами
Есть текст такого типа: {&quot;response&quot;:} как вывести следующие данные: 1 Павел Дуров...

Как скопировать нарисованное на форме изображение в объект Bitmap и вернуть его обратно
Всем здравствуйте. Нужно скопировать то, что нарисовано на канве формы в объект Bitmap. Для...


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

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

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