Замена элементов в QString на основе предиката
Вопрос
Мне нужно заменить символы в общем кодовом теге на основе их
QString
. В терминах stdlib я хочу
В качестве альтернативы я доволен регулярным выражением, которое работает с символом Юникода. категории, которые я могу использовать для генерации кода кода.
Возможно ли это с помощью QString или мне действительно нужно повернуть строку в общем коде тегов и обратно?
Изменить: категории, которые я хочу сохранить :
- для первого символа: $, _ или любой символ в категориях Unicode «Заглавная буква (Lu)», «Строчная буква (Ll)», «Заглавная буква (Lt)», «Буква-модификатор (Lm)» , «Другая буква (Lo)» или «Буквенный номер (Nl)»
- в остальном: первый маркер плюс любые символы U + 200C нулевой ширины, соединяющие символы нулевой ширины, U + 200D объединяющие символы нулевой ширины и символы в категориях Unicode «Знак без интервала (Mn)», «Метка объединения интервалов. (Mc) »,« Десятичное число (Nd) »или« Пунктуация соединителя (Pc) ».
Я могу делать первый / отдых за несколько проходов.
Решение
Qt предоставляет свои собственные способы делать такие вещи.Сомнительно, хорошо это или нет, но идиоматик Qt был бы
общийКонечно, вы можете сделать это с помощью лямбда-выражений и сгенерированного кода тега
общийно это не идиоматический кодовый код.
Обратите внимание, что удаление символов из строки происходит медленнее, чем добавление новых, если пространство было зарезервировано, поэтому первый пример кода выполняется быстро.