Название: [РЕШЕНО]QString проблема замены символов Отправлено: Viktor от Ноябрь 19, 2019, 13:01 Необходимо сделать так, чтобы при вводе символа "а", символ заменялся на "b", а "b" заменялся на "a". Если символ a на b в тексте уже менялся, то не заменять на a, во избежании повторов (у меня повтор получается и все символы обратно на a меняются).
При коде: Код
Но если дополнить код Код
То "a" сохраняется как "а", а "b" меняется на "a". Как мне сделать чтобы а на b менялось и b на а. В первом варианте использовал toHtml(); и setHtml(a) - это необходимо для сохранения форматирования текста (такие параметры как цвет, размер, формат шрифта) сохраняются при замене. Мне нужно именно с сохранением форматирования. При первом варианте кода форматирование сохраняется, а при втором ничего не происходит, поэтому я и заменил код на toPlainText(); но тогда а не меняется на b. Название: Re: QString проблема замены символов Отправлено: Igors от Ноябрь 19, 2019, 15:23 Ну replace + replace здесь не поможет т.к. после первой же замены замененные буквы неотличимы от "оригинальных". Просто в цикле, напр
Код
Название: Re: QString проблема замены символов Отправлено: Viktor от Ноябрь 19, 2019, 18:45 Спасибо, помогло, заработало, то что надо! :) :D ;D
Название: Re: QString проблема замены символов Отправлено: Viktor от Ноябрь 19, 2019, 19:18 Проверил -размер шрифта изменяется, но курсив и прочие параметры нет, что тогда делать? Я так понимаю s.size() нужно на что-то заменить, менял на s.count, но всё-равно та же проблема.
Ну replace + replace здесь не поможет т.к. после первой же замены замененные буквы неотличимы от "оригинальных". Просто в цикле, напр Код
Название: Re: QString проблема замены символов Отправлено: Igors от Ноябрь 20, 2019, 16:04 Проверил -размер шрифта изменяется, но курсив и прочие параметры нет, что тогда делать? Я так понимаю s.size() нужно на что-то заменить, менял на s.count Нет, ReplaceAB (как и QString::replace) - это просто замена содержимого строки, ни о каком формате она не знает и, возможно, покалечит его если он имеет a/b. Как я понял, Вы хотите копировать "с атрибутами". т.е. напр если в ui->textEdit был красный текст italic, то такой же должен появиться в ui->textBrowser. Если так то придется парсить содержимое html строки и в ней уже менять a/b. См напр QXmlStreamReader Название: Re: QString проблема замены символов Отправлено: Viktor от Ноябрь 21, 2019, 13:09 Да правильно поняли, можете подсказать как в моём случае QXmlStreamReader использовать.
А то я с парсингом не очень разобрался. Проверил -размер шрифта изменяется, но курсив и прочие параметры нет, что тогда делать? Я так понимаю s.size() нужно на что-то заменить, менял на s.count Нет, ReplaceAB (как и QString::replace) - это просто замена содержимого строки, ни о каком формате она не знает и, возможно, покалечит его если он имеет a/b. Как я понял, Вы хотите копировать "с атрибутами". т.е. напр если в ui->textEdit был красный текст italic, то такой же должен появиться в ui->textBrowser. Если так то придется парсить содержимое html строки и в ней уже менять a/b. См напр QXmlStreamReader Название: Re: QString проблема замены символов Отправлено: Igors от Ноябрь 21, 2019, 14:13 Да правильно поняли, можете подсказать как в моём случае QXmlStreamReader использовать. Я никогда его не использовал :) Ну "по букварю" вроде так (аттач). Стоит подумать нужно ли такое дорогое удовольствие, может просто обойтись plainTextА то я с парсингом не очень разобрался. Название: Re: QString проблема замены символов Отправлено: Viktor от Ноябрь 21, 2019, 14:38 Тогда пока обойдусь plainText, просто с парсингом было-бы красивее.
Да правильно поняли, можете подсказать как в моём случае QXmlStreamReader использовать. Я никогда его не использовал :) Ну "по букварю" вроде так (аттач). Стоит подумать нужно ли такое дорогое удовольствие, может просто обойтись plainTextА то я с парсингом не очень разобрался. Название: Re: QString проблема замены символов Отправлено: Viktor от Ноябрь 22, 2019, 18:14 Спасибо, по разбирался - у меня получилось благодаря Вашему коду. Спасибо. :) ;) ;D
Да правильно поняли, можете подсказать как в моём случае QXmlStreamReader использовать. Я никогда его не использовал :) Ну "по букварю" вроде так (аттач). Стоит подумать нужно ли такое дорогое удовольствие, может просто обойтись plainTextА то я с парсингом не очень разобрался. Название: Re: QString проблема замены символов Отправлено: Viktor от Ноябрь 22, 2019, 18:32 Единственное что, если в тексте разный формат (Ravie, Roman), то передаётся только первое значение, остальной формат удаляется, а как сделать, чтобы передавалось с разным форматом?
Да правильно поняли, можете подсказать как в моём случае QXmlStreamReader использовать. Я никогда его не использовал :) Ну "по букварю" вроде так (аттач). Стоит подумать нужно ли такое дорогое удовольствие, может просто обойтись plainTextА то я с парсингом не очень разобрался. Название: Re: QString проблема замены символов Отправлено: Viktor от Ноябрь 22, 2019, 18:59 Разобрался - нужно вместо "false" сделать "true" в одном месте и всё работает, спасибо.
Код
Единственное что, если в тексте разный формат (Ravie, Roman), то передаётся только первое значение, остальной формат удаляется, а как сделать, чтобы передавалось с разным форматом? Да правильно поняли, можете подсказать как в моём случае QXmlStreamReader использовать. Я никогда его не использовал :) Ну "по букварю" вроде так (аттач). Стоит подумать нужно ли такое дорогое удовольствие, может просто обойтись plainTextА то я с парсингом не очень разобрался. Название: Re: [РЕШЕНО]QString проблема замены символов Отправлено: m_ax от Ноябрь 23, 2019, 11:24 Это бессмысленный кусок кода :)
Код
Название: Re: [РЕШЕНО]QString проблема замены символов Отправлено: Viktor от Ноябрь 23, 2019, 12:39 Удалил, работает и без него, спасибо. 8)
Это бессмысленный кусок кода :) Код
Название: Re: [РЕШЕНО]QString проблема замены символов Отправлено: Igors от Ноябрь 24, 2019, 09:08 Никогда не занимался XML и как оттуда выдернуть именно "текст юзера" - не знаю. Если попечатать эл-ты "Character", то их там много, напр есть в эл-те "style", их трогать явно нельзя. Пробовал пройти в отладчике plainText, но там "обильно". Поэтому моей фантазии хватило только на "менять текст в теге "body". Это взято с потолка и вряд ли это 100% корректно :) Если уж разбираться то надо нагуглить где (т.е. в каких эл-тах/тегах) xml держит текст юзера. Ну это "если надо"
Название: Re: [РЕШЕНО]QString проблема замены символов Отправлено: Viktor от Ноябрь 26, 2019, 23:58 По крайней мере у меня всё работает без нареканий, может действительно можно лучше, но пока меня и так устраивает.
Если кто не против поделиться более хорошим результатом - я не возражаю. Никогда не занимался XML и как оттуда выдернуть именно "текст юзера" - не знаю. Если попечатать эл-ты "Character", то их там много, напр есть в эл-те "style", их трогать явно нельзя. Пробовал пройти в отладчике plainText, но там "обильно". Поэтому моей фантазии хватило только на "менять текст в теге "body". Это взято с потолка и вряд ли это 100% корректно :) Если уж разбираться то надо нагуглить где (т.е. в каких эл-тах/тегах) xml держит текст юзера. Ну это "если надо" |