Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
10 / 10 / 4
Регистрация: 10.09.2010
Сообщений: 197
1

Замена текста в Memo

15.10.2010, 16:06. Показов 3585. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте,
Memo содержит строки вида:

<a href="#1">
,

которые нужно заменить на:

<a href="/1.htm">
Первую часть (<a href="#) я заменяю таким образом:

C++
1
2
3
4
5
for (int i = 0; i < Memo1->Lines->Count; i++) {
    if (Memo1->Lines->Text.AnsiPos("<a href=\"#)") {
        Memo2->Lines->Text = StringReplace(Memo2->Lines->Text,"<a href=\"#","<a href=\"/",TReplaceFlags()<<rfReplaceAll);
    }
}
,

а как заменить вторую часть (">), ведь в Memo могут быть ">, которые не относятся к ссылке.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2010, 16:06
Ответы с готовыми решениями:

Перенос текста из Memo в Memo (Drag&Drop)
Подскажите как осуществить перетаскивание текста из memo в memo в с++ builder???

Замена слов в memo
Здравствуйте, подскажите пожалуйста , как при в воде в одно поля мемо и при нажатии кнопки...

Замена строки в Memo!
Всем привет! У меня проблема с заменой значений в компоненте Memo. Вот код кусочек кода: if (lc ...

Замена первого символа в каждой строчки memo
Здравствуйте! Как заменить первый символ в каждой строчке memo? Вот шаблон; for (int i = 0; i &lt;...

8
Эксперт С++
3953 / 1808 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
15.10.2010, 20:38 2
Цитата Сообщение от Mr. T Посмотреть сообщение
а как заменить вторую часть (">), ведь в Memo могут быть ">, которые не относятся к ссылке.
Нужным закрывающим тегом будет первый после открывающего. Логично? И не сложно.
0
10 / 10 / 4
Регистрация: 10.09.2010
Сообщений: 197
15.10.2010, 22:04  [ТС] 3
Цитата Сообщение от MikeSoft Посмотреть сообщение
Нужным закрывающим тегом будет первый после открывающего. Логично? И не сложно.
Логично, это типа "поиск далее"? Если да, то это проблема, в соседнем топике спрашивал о его реализации, но так и не понял...
0
Эксперт С++
3953 / 1808 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
15.10.2010, 23:01 4
Mr. T, я что-то вас не понимаю. Я вам в прошлой теме показал как работать с SubString.
Вам этого мало? Неужели нужен сложный алгоритм, чтобы отделить текст, заключённый в теги?

Ну да ладно. Показываю последний раз. В следующий раз я подобные темы буду просто игнорировать - уже заезжены до дыр подобные алгоритмы.

Пусть в Memo1 у нас есть следующий текст:
Код
Followed Link: <a href="#1">
Target: <a href="#2">
Выделим необходимые теги и заменим адрес:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
String Tag, Temp = Memo1->Text;
int GlobPos, Pos = Temp.Pos("<");
 
while (Pos > 0) {
  GlobPos = Pos;
  Tag = Temp.SubString(Pos,Temp.Length()-Pos);
  Pos = Tag.Pos(">");
  if (Pos > 0) {
    GlobPos += Pos;
    Tag = Tag.SubString(0,Pos);
    ShowMessage(Tag); // тег выделен из иходного текста
    Tag = StringReplace(Tag,"\"#","\"/",TReplaceFlags()<<rfReplaceAll);
    Tag = StringReplace(Tag,"\">","\.htm\">",TReplaceFlags()<<rfReplaceAll);
    ShowMessage(Tag); // тег, полученный после преобразований
  } else {
    break;
  }
  Temp = Temp.SubString(GlobPos+1,Temp.Length()-(GlobPos+1));
  Pos = Temp.Pos("<");
}
Неужели это было сложно сделать?
Даже не сделать, а подумать на тему "А как же это можно сделать"?
1
10 / 10 / 4
Регистрация: 10.09.2010
Сообщений: 197
20.10.2010, 13:25  [ТС] 5
Не работает этот код
0
Эксперт С++
3953 / 1808 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
20.10.2010, 13:33 6
Mr. T, понятия "не работает" для меня не существует.
Вместо "не работает" есть конкретные ошибки.
Данный пример я собирал на Embarcadero RAD Strudio XE.
Работает он "на ура", за это я ручаюсь!
0
10 / 10 / 4
Регистрация: 10.09.2010
Сообщений: 197
20.10.2010, 13:36  [ТС] 7
ShowMessage один раз показывает правильную замену, но в Memo ничего не меняется.
0
Эксперт С++
3953 / 1808 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
20.10.2010, 13:43 8
Mr. T, ну вы даёте ... а где вы видите в коде замену строк в Memo?
Вам алгоритм нужен был, или приложение полностью за вас написать?
В 11-ой строке на экран выводится тег, выделенный из текста.
Вот его и заменяйте в Memo.

Итог: Код - работает. Нужно просто учится пользоваться подсказками
1
10 / 10 / 4
Регистрация: 10.09.2010
Сообщений: 197
20.10.2010, 13:47  [ТС] 9
Да я сам уже понял, сам с себя ржу, спасибо
0
20.10.2010, 13:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2010, 13:47
Помогаю со студенческими работами здесь

Замена текста в Memo
for i := 1 to length(Memo1.Text) do if text='Q'then text:='Й'; код который заменяет Q на Й а...

Замена текста в Memo
Здравствуйте. имеется текст в мемо T 1480 -1928 2732 0 270 0 T 1441 -2062 2734 0 90 0 CT 1224...

Замена текста в Memo
Здравствуйте. имеется текст в мемо T 1480 -1928 2732 0 270 0 T 1441 -2062 2734 0 90 0 CT 1224...

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


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

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