2017-01-30 2 views
1

Ich brauche alle Unicode Emojis von einem QString zu entfernen, so dass ich versuchte, einen regulären Ausdruck zu schreiben:regex alle Unicode Emojis in QT5 zu entfernen

QRegularExpression uTF8Emojis("([\\xD83D][\\xDE00-\\xDFFF])+"); 

aber das macht nichts erkennen ...

+0

Versuchen Sie '' [\\ x {1F600} - \\ x {1F7FF}] + "'. Die Emojis, die Sie entfernen möchten, stammen jedoch möglicherweise aus einem anderen Unicode-Bereich. –

+0

diese Syntax scheint zu funktionieren, danke! – user1403333

Antwort

2

da QT5 QRegularExpression ist PCRE-betrieben, können Sie die gesamten Codepunkte für die Charaktere innerhalb \x{...} Notation verwenden, keine Notwendigkeit, diese Emojis als eine Folge von Bytes zu definieren:

"[\\x{1F600}-\\x{1F7FF}]+" 

können Sie this online converter verwenden: \uD83D\uDE00-\uD83D\uDFFF in die JavaScript Feld einfügen, und klicken Sie auf Konvertieren Sie die richtigen Codes in dem U + hex Feld zu bekommen.

+0

Einige der Astralzeichen sind in diesem Bereich nicht abgedeckt, ich empfehle 10000-10FFFF. nach https://stackoverflow.com/questions/24672834/how-do-i-remove-emoji-from-string/24673322#24673322 –

+1

@ e.jahandar: Ja, wenn es keine astralen Zeichen in der Eingabe geben kann, dass man will behalten. Emojis sind zahlreich, es gibt mehr Bereiche zu decken. Ich habe gerade OP Regex in QT verwendbare Form umgewandelt. –

Verwandte Themen