Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/86: Рейтинг темы: голосов - 86, средняя оценка - 4.51
 Аватар для Vovik_0_1
40 / 40 / 6
Регистрация: 28.07.2011
Сообщений: 431

Замена символов в AnsiString

19.06.2012, 14:22. Показов 17048. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем! Помогите разобраться.. Нужно заменить в строке AnsiString символы
C++
1
\r\n
на
C++
1
&
Делаю так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString text1 = Edit1->Text, zam = "&";
  //--------------------------  //Заменяем \r\n на &
  for (int i = 1;i<text1.Length()+1;i++) {
    if (text1[i] == "\\"  &&
        text1[i+1] == "r" &&
        text1[i+2] == "\\" &&
        text1[i+3] == "n" ) {
      text1.Delete(i,3);
      text1[i] = zam[1];
    }
    Label1->Caption = text1;
  }
  //--------------------------
}
Но выдаёт ошибки
C++
1
[C++ Error] Unit1.cpp(25): E2034 Cannot convert 'char' to 'char *'
В чём дело?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.06.2012, 14:22
Ответы с готовыми решениями:

Добавление n символов в начало строчки AnsiString
Всем привет, появился такой вопрос, как добавить определенное количество символов в начало строки AnsiString? Делал через циклы, но...

Проблема со сравнением значений(символов) в переменных типа AnsiString
Здравствуйте! Почему то при сравнении двух одинаковых символов в переменных str и b(тип AnsiString), билдер игнорирует совпадения....

Как перевести текст из AnsiString (в формате UTF8) в AnsiString формата Windows-1251?
Поиск по форуму не решил текущую проблему: 1. Есть текст в формате UTF-8 в величине: AnsiString qw; Вопрос: 2. Как перевести текст в...

18
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
19.06.2012, 14:41
Vovik_0_1, а попробуй так:
C++
1
2
AnsiString text1 = Edit1->Text;
char const zam = '&';
И тады:

C++
1
if (text1[i] == '\\' ... // в одинарные кавычки
1
 Аватар для Vovik_0_1
40 / 40 / 6
Регистрация: 28.07.2011
Сообщений: 431
19.06.2012, 14:47  [ТС]
Вот так ошибки нет:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString text1 = Edit1->Text  , zam = "&" , zn = "\\", zn2= "r" , zn3 = "n";
   //--------------------------  //Заменяем \r\n на &
  for (int i = 1; i<text1.Length()+1;i++)
{
 if (text1[i] == zn[1] && text1[i+1] == zn2[1] && text1[i+2] == zn[1] && text1[i+3] == zn3[1] )
 {
  text1.Delete(i,3);
  text1[i] = zam[1];
 }
  Label1->Caption = text1;
}
 //--------------------------
}
Но и толку нет.. Не заменяет(( В чём дело?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
19.06.2012, 14:52
Используйте StringReplace.
Может, у вас э длинное условие не выполняется:
C++
1
if (text1[i] == zn[1] && text1[i+1] == zn2[1] && text1[i+2] == zn[1] && text1[i+3] == zn3[1] )
Для єксперимента попробуйте:
C++
1
2
3
4
if (text1[i] == zn[1] ||
    text1[i+1] == zn2[1] ||
    text1[i+2] == zn[1] ||
    text1[i+3] == zn3[1] )
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
19.06.2012, 14:53
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString text1 = Edit1->Text;
  char const zam = '&';
  //--------------------------  //Заменяем \r\n на &
  for (int i = 1;i<text1.Length()+1;i++) {
    if (text1[i] == '\\'  &&
        text1[i+1] == 'r' &&
        text1[i+2] == '\\' &&
        text1[i+3] == 'n' ) {
      text1.Delete(i,3);
      text1[i] = zam[1];
    }
    Label1->Caption = text1;
  }
  //--------------------------
}
Хм... так не пашет?

И, кстати, попробуйте другие символы для теста. И заведомо поставьте их подряд.
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
19.06.2012, 14:58
Ой, это ж вы символы перевода каретки удалить хотите .
C++
1
2
3
AnsiString text1;
//...
text1 = StringReplace(text1,"\\r\\n","",TReplaceFlags()<<rfReplaceAll<<rfIgnoreCase);
2
 Аватар для Vovik_0_1
40 / 40 / 6
Регистрация: 28.07.2011
Сообщений: 431
19.06.2012, 22:28  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
AnsiString text1;
//...
text1 = StringReplace(text1,"\\r\\n","",TReplace Flags()<<rfReplaceAll<<rfIgnoreCase);
Увы не работает(..
C++
1
2
3
 AnsiString ba = "dfsdfs\r\nfgdfgg";
     ba = StringReplace(ba,"\\r\\n","",TReplaceFlags()<<rfReplaceAll<<rfIgnoreCase);
     Edit1->Text = ba;
Как было так и осталось! dfsdfs\r\nfgdfgg
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
19.06.2012, 22:34
а так
C++
1
2
3
AnsiString ba = "dfsdfs\r\nfgdfgg";
ba = StringReplace(ba,"\r\n","",TReplaceFlags()<<rfReplaceAll<<rfIgnoreCase);
Edit1->Text = ba;
Миниатюры
Замена символов в AnsiString  
1
 Аватар для Vovik_0_1
40 / 40 / 6
Регистрация: 28.07.2011
Сообщений: 431
19.06.2012, 23:45  [ТС]
Большое спасибо! Всё работает...
0
20.06.2012, 01:11

Не по теме:

Vovik_0_1, а колобок зачем? очки носить :) ?

0
20.06.2012, 01:17  [ТС]

Не по теме:

LK, Очки его! Он гитару носит :)А почему у тебя глаза испуганные? :)

0
20.06.2012, 01:41

Не по теме:

Цитата Сообщение от Vovik_0_1 Посмотреть сообщение
А почему у тебя глаза испуганные? :)
это не испуганные... это я какаю в засаде :D

1
 Аватар для Vovik_0_1
40 / 40 / 6
Регистрация: 28.07.2011
Сообщений: 431
25.06.2012, 15:54  [ТС]
А как узнать есть ли в строке определённые символы? Или нет.
Пробовал так: Не получается((
C++
1
2
3
4
5
6
7
8
9
  AnsiString ba = Edit2->Text;
if (StringReplace(ba,"cyberforum.ru","",TReplaceFlags()<<rfReplaceAll<<rfIgnoreCase)== true)
{
 Edit1->Text = "есть такое дело" ;
}
else
{
Edit1->Text = "Нет там такого";
}
0
 Аватар для Sasha
4956 / 2420 / 531
Регистрация: 05.06.2008
Сообщений: 7,518
Записей в блоге: 3
25.06.2012, 16:24
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   AnsiString A1 = "cyberforum.ru";
    AnsiString A2 = "u";
    for (int i = 1; i <= A1.Length(); i++) {
        for (int a = 1; a <= A2.Length(); a++) {
            if (A1[i] == A2[a])
                ShowMessage("Найден!");
        }
    }
}
1
 Аватар для Vovik_0_1
40 / 40 / 6
Регистрация: 28.07.2011
Сообщений: 431
25.06.2012, 16:32  [ТС]
Извеняюсь... Наверное я не верно задал вопрос. Вот есть например строка
C++
1
https://www.cyberforum.ru/cpp-builder/thread609261-page2.html
мне нужно узнать есть ли в этой строке слово
C++
1
cyberforum.ru
.. Чтобы я мог отлечить её например от
C++
1
http://www.fsdf.com/cpp-builder/thread609261-page2.html
0
Now I Matrix
137 / 134 / 28
Регистрация: 01.03.2010
Сообщений: 223
25.06.2012, 16:38
C++
1
2
3
4
5
6
7
8
9
AnsiString str = "https://www.cyberforum.ru/cpp-builder/thread609261-page2.html";
if(str.Pos("cyberforum.ru"))
{
 //Найдено
}
else
{
 //Ненайдено
}
2
 Аватар для T2skler
50 / 50 / 6
Регистрация: 16.05.2012
Сообщений: 232
25.06.2012, 17:23
Цитата Сообщение от Matrica Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
AnsiString str = "https://www.cyberforum.ru/cpp-builder/thread609261-page2.html";
if(str.Pos("cyberforum.ru"))
{
 //Найдено
}
else
{
 //Ненайдено
}
Лучше использовать AnsiPos.
0
 Аватар для Vovik_0_1
40 / 40 / 6
Регистрация: 28.07.2011
Сообщений: 431
25.06.2012, 23:39  [ТС]
Цитата Сообщение от T2skler Посмотреть сообщение
Лучше использовать AnsiPos.
А чем лучше?
0
 Аватар для T2skler
50 / 50 / 6
Регистрация: 16.05.2012
Сообщений: 232
26.06.2012, 00:07
Цитата Сообщение от Vovik_0_1 Посмотреть сообщение
А чем лучше?
AnsiPos поддерживает многобайтовые символы, но лучше всё приводить к верхнему регистру.

Эх, память моя, память...

Добавлено через 24 минуты
Обе функции чувствительны к регистру.
C++
1
AnsiPos(AnsiUpperCase(String), AnsiUpperCase(InString)); // поиск без учёта регистра
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.06.2012, 00:07
Помогаю со студенческими работами здесь

Замена символов
Заменить все символы &quot;!&quot; на символ &quot;*&quot;, а символы &quot;.&quot; на символ &quot;…&quot; математическая ошибка на end; &gt; Program zadacha6; var...

Замена символов
Программа должна заменять символы в тексте &quot;,&quot; на &quot;,слово,&quot;. Использовать библиотеку функций. То есть в одном файле - функция, а в...

Замена символов
Заменить все символы ch1 в строке ch2. &lt;?php $string = &quot;The quick brown fox jumped over the lazy dog.&quot;; $patterns =...

Замена символов.
Есть TStringList *a Нужно поменять все пробелы на плюсы. Вопрос простой, но используя Pos, Delete и так далее алгоритм становится...

Замена символов
есть строка string letter = &quot;привет&quot;; Есть 2 алфавита string alp=...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru