如何计算数组中所有字符串的出现次数,并在每次重复时替换最后出现的次数?

时间:2019-07-09 12:28:41

标签: c++ qt file

我想使用Qt创建一个应用程序,该应用程序允许我浏览包含多行重复字符串的文本文件,将内容存储在数组中,并在每次重复字符串时计数。如果该字符串重复两次以上,我想用“-”替换最后出现的两次。如果该字符串仅重复两次,我可以将最后一次出现的内容替换为“-”。

我刚刚发现了如何计算数组中字符串出现的次数,但这不是我所需要的。

注意:我必须忽略出现的第一个字符串和最后一个字符串。

到目前为止,我的代码

    void MushMushPlugin::browse()
{
    QString filename = QFileDialog::getOpenFileName(
        this,
        QStringLiteral("Ouvrir Fichier"),
        "",
        "Fichiers Text(*.txt)");
    browseLine->setText(filename);
    qDebug() << "here: ";
    qDebug() << getFileContent(filename);
    QList<QString> myarray = getFileContent(filename);
    get_output_list(myarray);
}
QList<QString> MushMushPlugin::getFileContent(QString filename)
{
    QFile inputFile(filename);
    inputFile.open(QIODevice::ReadOnly);
    QTextStream stream(&inputFile);
    stream.setCodec("UTF-8");
    QList<QString> fileContent;
    while (!stream.atEnd()) {
        QString line;
        line = stream.readLine();
        fileContent.append(line);
    }

    return fileContent;
    //return stream.readLine
}

QList<QString> MushMushPlugin::get_output_list(QList<QString> original_list)
{
    QList<QString> output_list = QList<QString>();
    qDebug() << original_list;
    //return m_array;
    QList<QString> tmp_list = QList<QString>();
    int j = 0;
    for (int i = 0; i < original_list.size()-1; i++) {
        tmp_list.append(original_list[i]);
        if (original_list[i] == original_list[i+1]) {
            tmp_list.append(original_list[i+1]);
        }
        else {
            output_list.append(tmp_list);
            tmp_list = QList<QString>();
        }
    }

    qDebug() << output_list;
    return output_list;
}

QList<QString> MushMushPlugin::replace_with_underscore(QList<QString> duplicatedList)
{
    QList<QString> m_array = duplicatedList;
    if (m_array.size() > 2) {
        m_array.replace(m_array.size(), "-");
        m_array.replace(m_array.size()-1, "-");
    }
    if (m_array.size() == 2) {
        m_array.replace(m_array.size(), "-");
    }
    return m_array;
}

输入数据

  

aaa

     

aaa

     

aaa

     

bbb

     

bbb

     

ccc

     

ccc

     

ccc

     

ddd

     

ddd

     

ddd

     

ddd

预期产量

  

aaa

     

-

     

-

     

bbb

     

-

     

ccc

     

-

     

-

     

ddd

     

ddd

     

-

     

-

0 个答案:

没有答案