Я хочу создать приложение, использующее 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;
}
Входные данные
ААА
ААА
ААА
БББ
БББ
куб. См
куб.
ccc
ddd
ddd
ddd
ddd
Ожидаемый результат
ааа
-
-
bbb
-
ccc
-
-
DDD
DDD
-
-