如何使用QRegExp过滤文本文件内容?

时间:2016-06-09 10:51:35

标签: c++ qt text-files qcombobox qregexp

我有一个包含以下行的文本文件:

a1     b00     2222 
a1     b01     233 
a1     b92     34444
a2     b00      2222
a2     b00      3333
a2     b01      3333

我想阅读此文件并使用QRegExp

过滤文字

并将结果填充到三个QComboBox combo1中,对于第一个匹配的情况,combo2填充到第二个匹配的情况,将combo3填充到第三个匹配的情况。 结果如下:

 combo1 
 a1 
 a2

combo1中选择a2然后combo2将是

 combo2 
  b00   
  b01

当从combo2选择b00时,combo3将是

 combo3 
 2222 
 3333

我没有与QRegExp合作,有人可以告诉我如何实现这个目标吗?

2 个答案:

答案 0 :(得分:2)

我建议您使用 button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //note: import android.support.v4.app.FragmentManager;!!! FragmentManager fm = getSupportFragmentManager(); AmountDialog alert = new AmountDialog (); alert.show(fm, "AmountDialog"); } }); 来过滤此内容。因为您正在使用以空格分隔的文件,所以非常只需将其读入QRegExp并使用它来填充vector es。例如:

QComboBox

Live Example

请注意,您还可以使用QTextStream并直接将其读取到QString甚至是QStringList。我选择不将您的业务逻辑与GUI逻辑分开。

答案 1 :(得分:-1)

我需要过滤(匹配)每一行的QregExp是

    QRegExp rx("\\s*(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s*"); 
    if (rx.exactMatch(line) //to cehck if rx matches the line from the text file
      {
          QString col1 = rx.cap(1);//the first column that goes to combo1
          QString col2 = rxHeader.cap(2);//the second column that goes to combo2
          QString col2 = rxHeader.cap(3);//the third column that goes to combo3
      }

现在它适用于我。