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.
  • 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