С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/88: Рейтинг темы: голосов - 88, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 29.04.2019
Сообщений: 34

Работа с QString, замена символов

04.11.2019, 08:15. Показов 18449. Ответов 11

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста разобраться: как сделать чтобы при замене цифры 1 на 2, если далее идёт значение заменить 2 на 1, то в тексте не заменялись все на последнее значение, т.е если 1 заменяется на 2, но если 2 уже была заменена в тексте, то она не заменялась обратно на 1. И с другими символами также - если была введена a, то она заменяется на b, но если с b произошла замена, то её обратно не менять, а если замены не было, тогда поменять.

Код:
C++ (Qt)
1
2
3
4
5
6
7
8
9
void Project::on_pushButton_clicked()
{
    QString a = ui->textEdit->toPlainText();
    a.replace("1", "2");
    a.replace("2", "1");
    a.replace("a", "b");
    a.replace("b", "a");
    ui->textBrowser->setText(a);
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.11.2019, 08:15
Ответы с готовыми решениями:

Поиск символов в строке QString
как определить , есть ли в нашей строке(str1) символы JFIF, если да то вывести сообщение +

Qstring удалить все символы после определенных символов в строке
есть строка: как удалить все что идет после &sa

работа c qstring
пишу текстовый редактор , QString word=ui->lineEdit->text(); QString word2=ui->lineEdit_2->text(); QString str...

11
736 / 700 / 110
Регистрация: 29.05.2015
Сообщений: 4,267
04.11.2019, 08:40
"Вручную" перебирать строку от первого до последнего символа и менять то, что нужно.
0
фрилансер
 Аватар для Алексей1153
6449 / 5643 / 1129
Регистрация: 11.10.2019
Сообщений: 15,023
04.11.2019, 08:42
Лучший ответ Сообщение было отмечено Goodzon999 как решение

Решение

если я правильно понял

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <QMap>
#include <QDebug>
 
int main(int argc, char *argv[])
{
    QMap<QChar,QChar> repl
    {
        {'1','2'},
        {'2','1'},
        {'a','b'},
        {'b','a'},
    };
    
    QString str = "__a__1_b__1_b__2a___1__22_2_b_1__2_a___2_a_1__2_b__b_";
    qDebug()<<str;
    
    for(auto& c:str)
    {
        auto it=repl.find(c);
        if(it==repl.end())continue;
        c=it.value();
    }
    qDebug()<<str;
}
"__a__1_b__1_b__2a___1__22_2_b_1__2_a___2_a_1__2_b__b_"
"__b__2_a__2_a__1b___2__11_1_a_2__1_b___1_b_2__1_a__a_"
1
0 / 0 / 0
Регистрация: 29.04.2019
Сообщений: 34
04.11.2019, 09:27  [ТС]
Да, верно, но как мне тогда сделать вывод в textBrowser? У меня сделано через ui->
0
фрилансер
 Аватар для Алексей1153
6449 / 5643 / 1129
Регистрация: 11.10.2019
Сообщений: 15,023
04.11.2019, 09:38
Goodzon999, ui->textEdit->setPlainText ?
0
0 / 0 / 0
Регистрация: 29.04.2019
Сообщений: 34
04.11.2019, 09:45  [ТС]
Да, всё верно как мне туда вывод прописать, т.е. я ввожу в textEdit, а выводить в textBrowser.
0
фрилансер
 Аватар для Алексей1153
6449 / 5643 / 1129
Регистрация: 11.10.2019
Сообщений: 15,023
04.11.2019, 09:55
Goodzon999, ui->textBrowser->setPlainText
0
0 / 0 / 0
Регистрация: 29.04.2019
Сообщений: 34
04.11.2019, 10:44  [ТС]
Алексей1153,
Всё, спасибо огромное, немного тупанул, не туда вывод сделал. Получилось.

Добавлено через 24 минуты
Алексей1153, Ещё вопрос, а как тогда быть с русскими символами? Используется кодировка UTF8, и например если q как \161 можно прописать, то с русскими символами не получается, там идёт двойное значение и его не принимает - й это \320\271, даже если написать {'q','й'}
0
фрилансер
 Аватар для Алексей1153
6449 / 5643 / 1129
Регистрация: 11.10.2019
Сообщений: 15,023
04.11.2019, 10:46
Goodzon999, перегоняй utf8 в юникод QString::fromUtf8
0
0 / 0 / 0
Регистрация: 29.04.2019
Сообщений: 34
04.11.2019, 11:28  [ТС]
Алексей1153, у меня в QMap<QChar,QChar> repl возникает ошибка, а не в QString
project.cpp:31:17: warning: multi-character character constant
0
фрилансер
 Аватар для Алексей1153
6449 / 5643 / 1129
Регистрация: 11.10.2019
Сообщений: 15,023
04.11.2019, 11:32
Goodzon999, это не ошибка, а предупреждение. Поставь префикс L

C++ (Qt)
1
2
3
4
5
6
7
QMap<QChar,QChar> repl
    {
        {L'1',L'2'},
        {L'2',L'1'},
        {L'a',L'b'},
        {L'й',L'a'},
    };
1
0 / 0 / 0
Регистрация: 29.04.2019
Сообщений: 34
04.11.2019, 11:35  [ТС]
Алексей1153, Работает, спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.11.2019, 11:35
Помогаю со студенческими работами здесь

Работа с QString
подскажите , пожалуйста, аналоги функциям pos &amp; copy из delphi Function Pos(Substr : String; S : String) : Byte; Function Copy(S :...

QFile::rename(QString name1, QString name2) не работает под Win
Добрый день! Столкнулся с проблемой: QFile::rename(QString name1, QString name2) не работает под Windows 7. На CentOS 6 нормально -...

Как разбить QString строку на подстроки, т.е. на qlist <qstring> ?
Как разбить QString строку: &quot;/michaeltosell&quot;, &quot;/vorago&quot;, &quot;/yanochka147&quot;, &quot;gertylohhg&quot;, на подстроки, т.е. на qlist &lt;qstring&gt; ? ...

QList <QPair <QString, QString> > - сортировка пузырьком
Возможно ли? =) Есть список городов с их идентификационным номером, например: 21:Ульяновск;1:Москва;15:Одесса;2:Назарово;3:Ростов ...

Cтрока: Как сконвертировать QString в const QString?
Доброго времени суток. Как сконвертировать QString в const QString


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru