我需要找到并替换文本文件中的一些文本。我用google搜索并发现最简单的方法是从文件读取所有数据到QStringList,找到并用文本替换精确的行,然后将所有数据写回我的文件。这是最短路吗?请你提供一些例子。 UPD1我的解决方案是:
QString autorun;
QStringList listAuto;
QFile fileAutorun("./autorun.sh");
if(fileAutorun.open(QFile::ReadWrite |QFile::Text))
{
while(!fileAutorun.atEnd())
{
autorun += fileAutorun.readLine();
}
listAuto = autorun.split("\n");
int indexAPP = listAuto.indexOf(QRegExp("*APPLICATION*",Qt::CaseSensitive,QRegExp::Wildcard)); //searching for string with *APPLICATION* wildcard
listAuto[indexAPP] = *(app); //replacing string on QString* app
autorun = "";
autorun = listAuto.join("\n"); // from QStringList to QString
fileAutorun.seek(0);
QTextStream out(&fileAutorun);
out << autorun; //writing to the same file
fileAutorun.close();
}
else
{
qDebug() << "cannot read the file!";
}
答案 0 :(得分:3)
如果要求更改,例如将'ou'替换为美国'o',那么
“颜色行为味道邻居”成为“颜色行为味道邻居”,您可以这样做: -
QByteArray fileData;
QFile file(fileName);
file.open(stderr, QIODevice::ReadWrite); // open for read and write
fileData = file.readAll(); // read all the data into the byte array
QString text(fileData); // add to text string for easy string replace
text.replace(QString("ou"), QString("o")); // replace text in string
file.seek(0); // go to the beginning of the file
file.write(text.toUtf8()); // write the new text back to the file
file.close(); // close the file handle.
我没有对此进行编译,因此代码中可能存在错误,但它为您提供了可以执行的操作的概要和概括。
答案 1 :(得分:0)
我正在使用regexp与批处理文件和sed.exe(来自gnuWin32,http://gnuwin32.sourceforge.net/)。它足以替换单个文本。 顺便说一下,那里没有简单的正则表达式语法。让我知道如果你想得到一些脚本的例子。