我想使用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
-
-