Qt操作Html文件的内容:

  • 若在Visual Studio中使用Qt进行开发
    请加上#pragma execution_character_set(“utf-8”),指定字符文本和字符串执行的字符集,否则QString中查找和替换中文字符时,出现异常。这是因为在Visual Studio开发时,在复制其他代码到VS的编辑器时,可能会导致UTF-8编码变成GB2312简体。

  • QString在使用indexOf()函数索引(查找)字符串时,请在判断成功的操作时,请与-1进行比较进行判断是否索引到字符串。

  • QFile和QTextStream实现按行读取文本文件的数据

  • QRegExp使用正则表达式进行字符串的匹配

#include <QtCore/QCoreApplication>
#include <QTextCodec>
#include <QFile>
#include <QDebug>
#include <QTextStream>
#include <QRegExp>#ifdef  _MSC_VER
#pragma execution_character_set("utf-8")
#endifint main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QString fileName = "report1.html";QString content;QString newContent;QRegExp rx("[0-9]+");QFile file(fileName);int numFlag = 0;if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {QTextStream stream(&file);stream.setCodec("UTF-16");QString chart1Total;while (!stream.atEnd()) {numFlag++;content = stream.readLine();if (content.indexOf("Out of date") > -1){content = content.replace(QStringLiteral("Out"), QStringLiteral("Up"));qDebug() << content;}else if (content.indexOf("过期") > -1){content = content.replace(QObject::tr("过期"), QObject::tr("最新"));qDebug() << content;}if (numFlag >= 50 && numFlag <= 53) {//Totalint pos = 0;while ((pos = rx.indexIn(content, pos)) != -1) {qDebug() << content;chart1Total = rx.cap(0);pos += rx.matchedLength();qDebug() << chart1Total;qDebug() << content;break;}}if (numFlag >= 54 && numFlag <= 57) {//Up to Dateint pos = 0;while ((pos = rx.indexIn(content, pos)) != -1) {qDebug() << content;QString ret = rx.cap(0);pos += rx.matchedLength();qDebug() << ret;content.replace(ret, chart1Total);qDebug() << content;break;}}if (numFlag >= 58 && numFlag <= 61) {int pos = 0;while ((pos = rx.indexIn(content, pos)) != -1) {qDebug() << content;pos += rx.matchedLength();QString ret = rx.cap(0);qDebug() << ret;content.replace(ret, "0");qDebug() << content;break;}}newContent += (content + "\n");}}file.close();//qDebug() << newContent;QFile newFile(fileName);if (newFile.open(QIODevice::WriteOnly | QIODevice::Text)) {QTextStream in(&newFile);in.setCodec("UTF-16");in << newContent;file.close();}return a.exec();
}

Qt实现读Html文件并替换里面的标签内容相关推荐

  1. Qt: QXMLStreamReader,读XML文件实例

    主要接口: 1.TokenType QXmlStreamReader::readNext() 功能:读取下一个标记,并返回其类型. 主要的类型有: enum QXmlStreamReader::Tok ...

  2. Qt下Tcp传输文件

    Qt下Tcp传输文件 文章目录 Qt下Tcp传输文件 1.服务端 2.客户端 1.服务端 //ServerWidgets.h #ifndef SERVERWIDGET_H #define SERVER ...

  3. python为csv文件添加表头_python读csv文件时指定行为表头或无表头的方法

    python读csv文件时指定行为表头或无表头的方法 pd.read_csv()方法中header参数,默认为0,标签为0(即第1行)的行为表头.若设置为-1,则无表头.示例如下: (1)不设置hea ...

  4. java读取文件夹下所有文件并替换文件每一行中指定的字符串

    java读取文件夹下所有文件并替换文件每一行中指定的字符串 该文章为转载文章,请尊重原文作者的劳动成果,好的文章应该被展示 原文传送门 多说两句,关键时候救人性命的人,可以称之为大人,随时做好利见大人 ...

  5. java 文件 模板 替换_JAVA 处理Word模板文件,替换其中的占位符

    1.java处理word是个大大的坑,无论是poi还是Java2word 都不是尽善尽美. 2.poi只能进行简单读操作,Java2word需要调用系统的com接口,系统机必须安装office和动态链 ...

  6. Qt的.pro工程文件语法学习

    我们编写Qt应用程序时,不管使用Qt Creator还是VS或者Eclipse,不管是Qt Widgets还是Qt Quick,总会发现有.pro文件,我们称.pro文件为Qt的工程管理文件,它存在的 ...

  7. qt 服务器数据库文件,qt用什么数据库文件怎么打开

    qt用什么数据库文件怎么打开 内容精选 换一换 云服务器新增磁盘,开机自动执行磁盘初始化脚本后,Oralce.MySQL和SQL Server等数据库系统日志Msg 823错误 .磁盘初始化脚本Win ...

  8. vscode老编译之前的文件_vscode 打开新文件不替换旧文件

    设置 "workbench.editor.enablePreview": false- 主要是模仿robocopy的部分功能 (robocopy /L 参数可以列出本地目录和备份目 ...

  9. 基于QT开发PC端文件加密工具

    基于QT开发PC端文件加密工具 1.客户需求 某案子.该方案,通过外挂TF卡实现,本地教育资源的调取使用.按客户需求,把TF卡内的内容进行加密,并在软件中写好解密,确保资源文件只能在教育机中才能正常播 ...

最新文章

  1. 一个资深技术人的转型之路
  2. Python天天美味(28) - urlopen
  3. BZOJ 1492: [NOI2007]货币兑换Cash [CDQ分治 斜率优化DP]
  4. 查看安装的cuda和cudnn的版本号
  5. Java Review - ArrayList 源码解读
  6. HC3i论坛电子病历系统热门资源30个
  7. Icon class生成器(Python)
  8. 2018/7/16-纪中某C组题【jzoj4024,jzoj4025,jzoj2136,jzoj2137】
  9. 卖票案例 多线程 java 1615387415
  10. 曹讯 计算机摄像学,计算摄像学: 全光视觉信息的计算采集
  11. 淘宝TFS文件系统配置
  12. TCP超时与重传机制
  13. 【Webcam设计】x264对OpenCV Mat的编解码
  14. tomcat下载安装及配置教程
  15. 世界时钟-国家中英文名称-国家代码-与北京的时差 一览
  16. vue 之 ele上传文件 和 下载文件
  17. 中国银行实习笔试面试经验
  18. 美通社日历 | 媒体关注、会展信息、企业财报发布,节假日备忘(8月3日—8月9日)...
  19. 动态规划求解最少硬币是多少?
  20. 从“机械复制”到“机械原创”:人工智能引发文化生产革命

热门文章

  1. T80 Google云端AI实验室
  2. 好用的个人树洞网盘外链系统源码
  3. 如何启用计算机上的摄像头,笔记本的摄像头怎么打开,详细教您笔记本电脑摄像头如何打开...
  4. 软工网络15团队作业2——团队计划
  5. 可编程区块链以太坊的未来
  6. 字母,数字,下划线或者数字的正则表达式
  7. 十二、平背-肋骨外翻-富贵包
  8. es-logstash-kibana-filebeat-ELK日志分析
  9. 操作系统原理_田丽华(7)死锁
  10. 索尼手机怎么开通Android,索尼第一款Xperia智能手机并不是Android系统