Εμφάνιση 1-4 από 4
  1. #1
    Εγγραφή
    04-02-2009
    Ηλικία
    33
    Μηνύματα
    1.486
    Downloads
    4
    Uploads
    0
    Τύπος
    ADSL
    Ταχύτητα
    2048/256
    ISP
    Cyta Hellas
    Καλησπέρα, έχω αυτό το condition
    Κώδικας:
    if (lineEdit->text().contains( QRegularExpression( "[0-9]" ) ) 
            || lineEdit->text().contains( QRegularExpression( "[[:punct:]]" ) ) 
            || lineEdit->text().contains( QRegularExpression( "[[:space:]]" ) ) )
    και χρησιμοποιείται σε πάνω από 2 φορές στον κώδικα. Θα ήθελα να έχω ένα alias (πχ QRegCondition) και να το χρησιμοποιώ έτσι στις if-else.

    Μόνη λύση που κατάφερα είναι με το define
    Κώδικας:
    #define QRegCondition (lineEdit->text().contains( QRegularExpression( "[0-9]" ) ) || lineEdit->text().contains( QRegularExpression( "[[:punct:]]" ) ) || lineEdit->text().contains( QRegularExpression( "[[:space:]]" ) ) )
    αλλά, ε είναι η γνωστή define.

    Δεν βρήκα τρόπο με typedef ή using. Ξέρει κανείς αν μπορώ και αν πρέπει γενικά να κάνω alias και με ποιον τρόπο;

    Ευχαριστώ.
    Τελευταία επεξεργασία από το μέλος petran_18 : 23-01-19 στις 15:07.
    Με ΜΑΤ και βία δεν βγαίνει πανδημία, Μιχαλάκη και Κούλη.

  2. #2
    Εγγραφή
    17-03-2003
    Περιοχή
    Trondheim
    Μηνύματα
    2.986
    Downloads
    6
    Uploads
    0
    Ταχύτητα
    Γρήγορη είναι
    ISP
    Telenor
    Υπάρχει κάποιος λόγος που δεν τα χεις όλα σε ένα regexp;

    Πχ το

    Κώδικας:
    lineEdit->text().contains(QRegularExpression( "[[:digit:][:punct:][:space]]" )
    κάνει το ίδιο πράγμα με το σεντόνι (τουλάχιστον σε pcre).

    Και η #define σε αυτήν την περίπτωση είναι μια χαρά.

  3. #3
    Εγγραφή
    04-02-2009
    Ηλικία
    33
    Μηνύματα
    1.486
    Downloads
    4
    Uploads
    0
    Τύπος
    ADSL
    Ταχύτητα
    2048/256
    ISP
    Cyta Hellas
    Παράθεση Αρχικό μήνυμα από Eruyome(MMXGN) Εμφάνιση μηνυμάτων
    Υπάρχει κάποιος λόγος που δεν τα χεις όλα σε ένα regexp;

    Πχ το

    Κώδικας:
    lineEdit->text().contains(QRegularExpression( "[[:digit:][:punct:][:space]]" )
    κάνει το ίδιο πράγμα με το σεντόνι (τουλάχιστον σε pcre).

    Και η #define σε αυτήν την περίπτωση είναι μια χαρά.
    Ναι, υποθέτω γίνεται. Πάντως αφού προβλέπεται και η define κάτι είναι και αυτό.
    Με ΜΑΤ και βία δεν βγαίνει πανδημία, Μιχαλάκη και Κούλη.

  4. #4
    Εγγραφή
    17-03-2003
    Περιοχή
    Trondheim
    Μηνύματα
    2.986
    Downloads
    6
    Uploads
    0
    Ταχύτητα
    Γρήγορη είναι
    ISP
    Telenor
    Επίσης γενικά τις regular expressions καλό είναι να τις ορίζουμε σε κάποιο σύμβολο αρχικά
    Κώδικας:
    QRegularExpression re("[[:digit:][:punct:][:space:]]");
    Και παρακάτω
    Κώδικας:
    lineEdit->text().contains(re) ...
    διαφορετικά κάθε φορά που καλείς με τον constructor γίνεται compile μια νέα regular expression. Σε σύγχρονα συστήματα και σε μικρές εφαρμογές κλάιν (δεν γνωρίζω αν η QT ή ο compiler κάνει κάποια εξυπνάδα αν δει την ίδια regexp σε πολλά μέρη), αλλα γενικά καλό είναι αυτό. Το bonus είναι οτι
    μικραίνει την γραμμή σε:

    Κώδικας:
    lineEdit->text().contains(re)

Tags για αυτό το Θέμα

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας