Qt Türkische Zeichen in regulären Ausdrücken

8

Ich möchte den QLineEdit-Text mit einem regulären Ausdruck validieren. Es sollten Zeichen von a bis z plus A bis Z plus türkische Zeichen (ğüşöçİĞÜŞÖÇ) plus Zahlen von 0 bis 9 erlaubt werden. Ich habe über mein Problem gegoogelt und zwei Lösungen gefunden, aber keine funktionierte für mich. In einer Lösung heißt es "schließt türkische Zeichen in Regexp ein" und in anderen heißt es "benutzt Unicodes türkischer Zeichen"

Unten sind zwei reqular Ausdrücke

%Vor%

Keiner der obigen Ausdrücke kann den Namen 'İSMAİL' validieren. Ich habe auch versucht, dass ein Text nur türkische Zeichen enthält ("ğüşöçİĞÜŞÖÇ"), aber er kann nicht validiert werden. Wenn ich den Buchstaben '©' aus beiden Texten entferne, können sie validiert werden. Ich nehme an, dass das Problem mit 'Charakter' in Verbindung gebracht werden kann.

Wie kann ich das Problem lösen?

Hinweis: Wir verwenden Qt 4.6.3 in unserem Projekt.

    
onurozcelik 05.06.2013, 07:12
quelle

3 Antworten

14

Ich denke, das ist ein Codierungsproblem. Sie verwenden die implizite Umwandlung von const char* nach QString , was zur Verwendung von QString::fromAscii führt. Wenn Sie hier nicht-Latin1-Kodierung verwenden möchten, müssen Sie QTextCodec::setCodecForCStrings aufrufen und die Kodierung einstellen, in der Ihre Quelldateien gespeichert sind. Ich würde UTF-8-Kodierung verwenden, also sollte die Initialisierung der App so erfolgen :

%Vor%

Ich schlage eine klarere Lösung vor, um zu überprüfen, ob Ihr Problem hier ist. Speichern Sie Ihren Code in der UTF-8-Codierung und verwenden Sie QString::fromUtf8 , um Ihre String-Literale mit Hilfe von UTF-8 explizit in QString zu konvertieren:

%Vor%     
Pavel Strakhov 05.06.2013, 09:03
quelle
2

Sie könnten versuchen, ^\p{L}+$ zu finden, was die Abkürzung für jeden Buchstaben ist.

    
mart1n 05.06.2013 08:16
quelle
1

sehr wahrscheinlich brauchen Sie \w . Es enthält ein beliebiges Zeichen (beliebige Sprache) Ziffern und Unterstrich.
Sie können Unterstriche wie (?!_)\w ausschließen.

    
Marek R 05.06.2013 12:18
quelle

Tags und Links