1、html特殊字符的显示

我们知道html语言和C语言一样也有一些特殊字符,它们是不能正常显示的,必须经过转义,在网上可以查到如何显示这些字符,如下图所示:

上图给了最常用的特殊字符的显示,下面我们来实验一下:

首先在记事本中写入一句:

<font color=blue>程序例font>#include<stdio.h>

然后就文本后缀名改为.html后

,用浏览器打开,显示如下:

我们从上图可以发现include后面没有显示,但是当我们在文本中写入:

<font color=blue>程序例font>#include<stdio.h>

<font color=blue>程序例font>#include<stdio.h>

时就能正常显示了。显示结果如下图:

我们知道Qt能够支持html语言,但是我在编写可以查询c语言函数(肯定有#include后面<>的特殊字符的显示问题)的时候发现使用上面的方法仍然不能显示特殊字符,后来灵机一动,就决定 用全角<>来代替半角<> 。这样就不会当成是特殊字符了,就可以正常显示了。半角和全角的转换只需要点击下图中的第3个按钮:

虽然说,使用全角后看起来不是很协调,但还看得过去,如果读者有什么好的方法,请不吝赐教。

2、正则表达式

接着上面的问题继续说,比如我有一个C语言函数词典库,我取其中一段来举例:

<font color=blue>程序例font>:<br>#include <span style="color:#ff0000;"><</span>stdio.h <span style="color:#ff0000;">>span><br>#include <span style="color:#ff0000;"><</span> stdlib.h <span style="color:#ff0000;">>span><br>int main(void)<br>

因为我们需要将上述半角的<>转换为全角的<>,并且 只是替换处于头文件的半角<> , 即字符串中为红色的部分 。当然当文件比较小的时候,可以手动查找替换,但是由于词典一半都有十几M,这时就必须使用正则表达式了。

在Qt中,使用了QRegExp来支持正则表达式。关于正则表达式的语法,网上都有很多教程,我就不细说了。从上面的实例字符串的内容,我们知道包含了几个头文件,所以我们在匹配时,要分别匹配各个头文件两边的半角<>, 即我们要使用非贪婪模式,否则就会从第一个头文件的。我们知道,在正则表达式中,非贪婪模式是由'?'来指定的,但是对于QRegExp类来说,?是不合法的。 在QRegExp中,要使用setMinimal函数来指定贪婪模式 。 setMinimal(true)就是非贪婪模式,setMinimal(false)就是贪婪模式。

通过上面两部分的讲解,就可以完成C语言函数库词典的显示了。下面通过代码实现,新建Qt

Gui应用程序,选择基类为QWidget,其中只需要修改widget.cpp里的内容即可(需要在widget.ui界面中,添加两个label,分别命名为label和label1)。

widget.cpp文件:

#include "widget.h"

#include "ui_widget.h"

#include<QString>

#include<QRegExp>

#include<QDebug>

#include<QLabel>

Widget::Widget(QWidget *parent) :

QWidget(parent),

ui(new Ui::Widget)

{

ui->setupUi(this);

QString str="<font color=blue>程序例font>:<br>#include <stdio.h ><br>#include < stdlib.h ><br>int main(void)<br>";

ui->label->setText(str); //由于Qt也能识别html格式,而< >是html的特殊字符,因此不处理的话,就会出现显示出错

QRegExp rx("#include (<(.*.h )>)");//正则表达式里的括号是为了获取匹配的内容

rx.setMinimal(true);//非贪婪模式

int pos=0;//从字符串的开始部分

for(int i=0;i<str.size();i++) {

pos=rx.indexIn(str,0);//得到匹配字符串的位置

while(pos!=-1)//匹配成功

{

str.replace(rx.cap(1),"<"+rx.cap(2)+">");//这里是进行替换,如果不明白rx.cap是什么,可以qDebug显示内容

pos=rx.indexIn(str,pos+rx.matchedLength());//从当前位置,继续往后进行匹配

}

}

ui->label1->setText(str);

}

Widget::~Widget()

{

delete ui;

}

程序运行结果如下:

下面放一张查单词软件用到的特殊字符显示和使用正则表达式后的截图:

html前台检验特殊字符正则,【Qt编程】html特殊字符及正则表达式相关推荐

  1. bash--shell高级编程-特殊字符

    shell高级编程-特殊字符 特殊字符 用在脚本和其他地方的特殊字符 # 注释. 行首以#(#!是个例外)开头是注释. # This line is a comment. 注释也可以放在于本行命令的后 ...

  2. shell编程中特殊字符的问题总结

    shell编程中特殊字符的问题总结 --同事王怡春的总结: 近日在编写shell脚本的遇到的一些问题,然后上网搜搜学习后,以下是总结后的版本,给大家分享,如有问题,错误,欢迎指正 一 通配符( * ) ...

  3. 【转】10.Qt编程涉及的术语和名词

    本节我们来介绍一下使用 Qt 编程过程中常用的术语和名字,它们不一定专属于 Qt,在其它的 C/C++ 开发过程中也会使用到. Project Project 的中文翻译是"项目" ...

  4. Qt编程中的信号和槽机制

    Qt编程中的信号和槽机制 在使用自定义类创建一个按钮之后,只能看到一个按钮的图形,但是使用鼠标点击并无任何反应,下面想要实现一个"点击按钮可以关闭窗口"的功能. 关闭窗口的功能可以 ...

  5. Qt编程公众号二维码

    Qt编程公众号二维码

  6. QT编程 批量打印二维码

    1.下载打印机驱动,驱动下载在资源列表里 2.QT编程 打印机初始化 3.打印机命令网上有文档,QRCODE命令打印二维码,内容自定义 主要是设置打印亚银纸张 长宽大小.字体大小.打印纸张位置,二维码 ...

  7. Qt编程基础:认识常用的基本类型

    前言 上一节已经成功创建了一个Qt项目,接下来就是要在创建好的项目中,添加自己想要的功能.在写代码之前,我们需要掌握Qt的一些基础知识. 语法部分就不用讲了,这系列文章是对有C或C++语言基础的同学展 ...

  8. 学习 Qt 编程的好书精品推荐!

    学习 Qt 编程的好书精品推荐! 最近一段时间,准备开始搞Qt方面的东西,想找几本书看看.网上介绍QT的书籍也有很多,不想浪费时间,所以想找几本精品的书籍来看.花了半天的时间找了几本非常不错的,这里面 ...

  9. Qt终极教程——用Qt编程实现中国象棋游戏(提供源代码和程序编译运行教程)

    Qt终极教程--用Qt编程实现中国象棋游戏 目录 Qt终极教程--用Qt编程实现中国象棋游戏 简介 运行可执行程序体验象棋游戏 Qt 安装 源代码的编译.运行与调试 生成预编译的可执行程序 简介 本文 ...

  10. 第二章 Qt编程核心技术

    QT编程核心技术介绍 第二章 Qt编程核心技术 Qt/X11与Qt/Embedded版本的Qt类库,尽管类的底层实现有一些细微区别,但类的声明及方法函数是一样的,对于编写Qt应用程序的编程者来说,几乎 ...

最新文章

  1. Vmware虚拟机的复制后无法使用的问题和解决
  2. mysql去掉两个最高分_从MySQL中的单列获取最高得分值,从两列获取最高得分值...
  3. linux+传输文件时卡住,linux - rsync 同步文件时卡住不动
  4. 如何将自己的站点与Ucenter整合——详解
  5. fastjson的值过滤器ValueFilter || fastjson输出字段为Null的两种
  6. 同一个网站下不同应用程序可以不同Framework版本
  7. 用linux命令通常做什么,如何知道你在 Linux 里最常使用的几个命令?
  8. 初识c语言教程,第1课C语言教程一: 初识C程序.doc
  9. (2)基于Bootstrap的网页开发
  10. 竞斗云2.0刷机-刷原厂固件
  11. 产品配件类目税目分类_商品和服务税收分类编码表
  12. 设计一个递归算法释放二叉树bt中的所有结点(二叉树采用二叉链表存储结构)
  13. 基于SSM的网上购物系统
  14. win10下如何安装win7自带的照片查看器。
  15. 基于loongnix20系统,libvlc代码直接集成测试
  16. 解决Win 7安装Power Shell报错问题
  17. 【技术管理】管理核心五要素 - 学习笔记
  18. 群晖、任务计划、python、虚拟环境
  19. Linux下安装anaconda
  20. xmuoj《C++与Python语法入门练习(By郭炜老师)》python参考代码

热门文章

  1. vs2013配置opencv2.4.9后出现找不到opencv_core249d.dll和opencv_highgui249d.dll问题
  2. tensorflow中GPU的设置
  3. Hamcrest总结--思维导图
  4. Java8 Stream详解~筛选:filter
  5. Java消息服务~消息属性
  6. 开放-封闭原则(OCP)
  7. C++学习之路 | PTA乙级—— 1087 有多少不同的值 (20 分)(精简)
  8. java mysql访问类_java 访问数据库公共类
  9. python跑一亿次循环_python爬虫爬取微博评论
  10. FreeRTOS应用开发笔记之一:FreeRTOS在STM32的移植