Мне нужно заменить символы в QString
на основе их QChar::category
. В STDLIB плане я хочуЗамена элементов в QString на основе предиката
string.erase(std::remove_if(begin(string), end(string),
[](QChar c) {
QChar::Category cat = c.category();
return cat == .... || cat == ...; }),
string.end());
В качестве альтернативы, я доволен регулярным выражением, которое работает на юникода характер категорий, которые я могу использовать для QString::replace
.
Возможно ли это с помощью QString или мне действительно нужно повернуть строку в std::vector<QChar>
и обратно?
Edit: Категории я хочу держать:
- первый charater: $, _, или любой символ в Unicode категории «Прописная буква (Lu)», «Строчные буквы (Ll) «,« Буквенное обозначение (Lt) »,« Буква модификатора (Lm) »,« Другая буква (Lo) »или« Номер письма (Nl) »
- для остальных: первая пуля плюс любой U + 200C символы нестационарной ширины нулевой ширины, символы столбца нулевой ширины U + 200D и символы в категориях Юникод «Метка с интервалом (Mn)», «Символьная метка интервала (Mc)», «Десятичное число цифр (Nd)» или «Connect или пунктуации (ПК) ".
Я могу сделать сначала/отдохнуть в несколько проходов.
Какие категории вы хотите удалить? – sgibb
@sgibb Те, которые не являются действительными идентификаторами JavaScript. Я добавлю их на этот пост. – pmr