Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Take empty lines as separators with the QString::split() function?
Forum Updated to NodeBB v4.3 + New Features

Take empty lines as separators with the QString::split() function?

Scheduled Pinned Locked Moved General and Desktop
14 Posts 4 Posters 4.5k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    msue
    wrote on last edited by
    #4

    Don't give up easily :-) and try up to four "". And compare the regexp docu about it. You can click on QRegExp in your code above,

    1 Reply Last reply
    0
    • C Offline
      C Offline
      clemmy9
      wrote on last edited by
      #5

      Thanks for your're fostering me...
      What is not recognized is actually the "^" symbol... Cause I tried to match it alone and no result was found...

      1 Reply Last reply
      0
      • SGaistS Offline
        SGaistS Offline
        SGaist
        Lifetime Qt Champion
        wrote on last edited by
        #6

        Hi,

        ^ in regexp means start of the line

        Interested in AI ? www.idiap.ch
        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

        1 Reply Last reply
        0
        • C Offline
          C Offline
          clemmy9
          wrote on last edited by
          #7

          Well I changed a bit my code as to transform the encoding of my file into utf8 :

          @ QFile file("/home/clemence/textes_test/jamaica_out.conll");
          if (!file.open(QIODevice::ReadOnly))
          LERROR << "cannot open file" << endl;
          QTextStream in(&file);
          in.setCodec("UTF-8");
          while (!file.atEnd()) {
          QByteArray text=in.readAll();
          QString textString = QString(text);
          QRegExp sentenceSeparator("^\n");
          QStringList sent= textString.split(sentenceSeparator, QString::KeepEmptyParts);
          LDEBUG << " There is " << sent.size() << "sentences " << LENDL;
          @

          but unless I'm doing it wrong, it's not the point...

          1 Reply Last reply
          0
          • N Offline
            N Offline
            nnead
            wrote on last edited by
            #8

            Can't you just check if the QString is empty?
            I have done something similar with std::string

            @ std::ifstream myfile ("file.txt");
            if (myfile.is_open())
            {
            while (getline (myfile,line))
            {

                    if (line=="")
                    {
                        raw.push_back(daten);
                        data.clear();
                    }
                    else
                    {
                        data.push_back(line);
                    }
            
                }
                myfile.close();
                raw.push_back(data);
                data.clear();
            }@
            

            In my case every empty line creates a new entry in an vector of an vector.

            1 Reply Last reply
            0
            • C Offline
              C Offline
              clemmy9
              wrote on last edited by
              #9

              I have, my Qstring contains my text as expected...

              1 Reply Last reply
              0
              • N Offline
                N Offline
                nnead
                wrote on last edited by
                #10

                i modified your code sniplet

                @ int sent=1;
                QFile file("D:\database.txt");
                if (!file.open(QIODevice::ReadOnly))
                qDebug() << "cannot open file" << endl;
                while (!file.atEnd()) {
                QByteArray text=file.readLine();
                QString textString = QString(text);

                    if (textString.size()<3){sent++;}
                
                }
                qDebug() << " There is " << sent << "sentences ";@
                

                It counts the right amount of lines for me

                1 Reply Last reply
                0
                • C Offline
                  C Offline
                  clemmy9
                  wrote on last edited by
                  #11

                  Thanks but I don't want to count lines but sentences. If you look at my input file at the beginning of this topic page, you can see that there are several lines for 1 sentence. That's why I used the readAll function and the "^$" QRegExp.

                  1 Reply Last reply
                  0
                  • N Offline
                    N Offline
                    nnead
                    wrote on last edited by
                    #12

                    Hi by lines i meant sentences, you can just copy&paste the sniplet and see if the number matches your data. For the given example it would compute: "There is 2 sentences".

                    1 Reply Last reply
                    0
                    • C Offline
                      C Offline
                      clemmy9
                      wrote on last edited by
                      #13

                      It actually computes the number of line, that is not the number of sentence

                      1 Reply Last reply
                      0
                      • C Offline
                        C Offline
                        clemmy9
                        wrote on last edited by
                        #14

                        Okay I've just understood what you meant nnead. I tested your code on data with longer lines so it couldn't work... Thank you :)

                        1 Reply Last reply
                        0

                        • Login

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups
                        • Search
                        • Get Qt Extensions
                        • Unsolved