Замена элементов в QString на основе предиката

StackOverflow https://stackoverflow.com/questions/9400598

  •  29-10-2019
  •  | 
  •  

Вопрос

Мне нужно заменить символы в общем кодовом теге на основе их QString. В терминах stdlib я хочу

общий

В качестве альтернативы я доволен регулярным выражением, которое работает с символом Юникода. категории, которые я могу использовать для генерации кода кода.

Возможно ли это с помощью QString или мне действительно нужно повернуть строку в общем коде тегов и обратно?

Изменить: категории, которые я хочу сохранить :

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

Я могу делать первый / отдых за несколько проходов.

Это было полезно?

Решение

Qt предоставляет свои собственные способы делать такие вещи.Сомнительно, хорошо это или нет, но идиоматик Qt был бы

общий

Конечно, вы можете сделать это с помощью лямбда-выражений и сгенерированного кода тега

общий

но это не идиоматический кодовый код.

Обратите внимание, что удаление символов из строки происходит медленнее, чем добавление новых, если пространство было зарезервировано, поэтому первый пример кода выполняется быстро.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top