获取QStringList的最后一个元素

时间:2015-01-06 11:29:12

标签: c++ qt

我有一个像这样的QString列表

daily-logs.06-01-2015.01 
daily-logs.06-01-2015.02 
daily-logs.06-01-2015.03

现在我想获得新的QStringList获取最后一个字符串的数字

01 02 03

QStringList list = folder_file.entryList(nameFilter);

for(int i=0;i<list.count();i++){
    qDebug()<<list.at(i).toLocal8Bit().constData();


    QStringList list2=list.at(i).split(".");
    for(int j=0;j<list2.count();j++){
        //qDebug()<<list2.at(j).toLocal8Bit().constData();
        QString list3=list2.value(list2.length()-1);

        qDebug()<<list3;
        //qDebug()<<list3;
    }

我只能获得最后一个值。但我认为这更像是循环。那么,是否有人有一种方法可以获得更高的性能。

3 个答案:

答案 0 :(得分:5)

使用特殊文件QFileInfo::suffix功能:

const auto& list = folder_file.entryList(nameFilter);
QStringList output;   
for(const auto& f : list)   
    output << QFileInfo(f).suffix();

答案 1 :(得分:2)

你的代码太脏......

QStringList DoSomeDirtyWork( const QStringList& input )
{
  QStringList output;

  for ( auto it = input.constBegin(); it != input.constEnd(); ++it )
  {
    const QString& src = *it;
    const int pos = src.lastIndexOf('.');
    output << src.mid( pos );
  }

  return output;
}

答案 2 :(得分:1)

QStringList list = folder_file.entryList(nameFilter);
for (int i = 0; i < list.count(); ++i) {
    QStringList wordList = list[i].split('.');
    qDebug() << wordList.takeLast();
}

也许它不是那么可爱和短暂,但它是一个没有QFileInfo的例子。