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

1、html特殊字符的显示

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

a4c26d1e5885305701be709a3d33442f.png

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

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

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

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

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

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

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

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

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

a4c26d1e5885305701be709a3d33442f.png

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

a4c26d1e5885305701be709a3d33442f.png

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

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;

}

程序运行结果如下:

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

a4c26d1e5885305701be709a3d33442f.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html 变量类型强制转换,html、js前台数据传到后台,spring复杂类型转换

html、js前台数据传到后台&#xff0c;spring复杂类型转换如果我有两个变量&#xff0c;变量名不一样&#xff0c;处理的规则也不一样&#xff0c;但是他们都是Date.class 类型&#xff0c; 这可怎么破。比如&#xff1a;InitBinderpublic void bindingPreparation(WebDataBind…

html盒模型中border的写法,HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手...

很多小伙伴在前端学习的时候&#xff0c;发现盒子模型默认为正方形。如何把盒子变成想要的模型呢&#xff1f; 首先我们来看一下默认的情况----.box{width: 100px;height: 100px;background-color: rgb(116, 51, 51);box-shadow:0 10px 10px red;text-align: center;position:a…

希捷银河声音大_每日观影之银河守门员( )

#银河守门员Вратарь Галактики#真心不错的科幻大片…尤其这剧情故事实在是俄国电影的一个很有突破性的亮点…基本可以说全方面凸显了俄罗斯的国情…比如高大上的部分完全不输欧美甚至有所超越领先都是要拯救世界而且还很壮烈拼搏的样子…然而百姓生活却显得很窘…

html select 修改默认箭头样式,自定义select标签箭头样式

select::-ms-expand{ display: none; }//ie样式清除select{appearance:none;-moz-appearance:none;-webkit-appearance:none;background: url("/uploadfiles/images/alliance/xiala2x.png") no-repeat scroll 480px center transparent;background-size: 20px 10px;p…

bat循环执行带参数_wxappUnpacker的bingo.bat脚本逐行解读

点击上方“蓝字”关注我们之前发过一篇文章小程序反编译工具在windows系统下的调用脚本提到了Windows平台下的脚本&#xff0c;但是对脚本没有做详细说明。本文就是针对脚本做的讲解。对批处理感兴趣的可以了解下。不会基础也没关系。下面我们进入正题。脚本解读第1行&#xff…

把HTML代码上传到gitee,使用git上传项目到gitee以及VS使用git管理项目

在打开的GIt Bash中输入以下命令(用户和邮箱为你github注册的账号和邮箱)$ git config --global user.name "hanyuntao"$ git config --global user.email "hanyuntaocn163.com"Paste_Image.png2.4 设置SSH key(git中sshkey有何作用&#xff1f;)2.4.1 生成…

定值保险计算举例_保险公司的“开门红”又要来了!理财险真的值得买吗?

临近年末&#xff0c;各家保险公司都开始备战2020年的“开门红”。对于保险公司来说&#xff0c;“开门红全年红”&#xff0c;只要开门红的任务完成得好&#xff0c;那么今年大半年的保费就不用担心了&#xff0c;因此保险公司们对于这一战都十分重视。如果说“双11”、“双12…

html中post语句,html中post乱码的解决方法

html中post乱码的解决方法发布时间&#xff1a;2021-05-27 11:29:00来源&#xff1a;亿速云阅读&#xff1a;91作者&#xff1a;小新这篇文章主要介绍html中post乱码的解决方法&#xff0c;文中介绍的非常详细&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们一定要…

泸州田家炳中学2021高考成绩查询,2021年泸州中考线出来了吗

中考是人们升高中的必经之路&#xff0c;它虽然没有高考那样振奋人心&#xff0c;但是对于当时的人来说也算是一场最正规的考试。首先&#xff0c;不可否认的是中考是很重要的。虽然它不能对高考有着直接影响&#xff0c;但是却有着间接影响。在每年的六份左右出来。中考是很重…

django返回指定html文件,Django返回HTML文件的实现方法

前面我们简单的了解Django的一些工作原理&#xff0c;其中关于页面展示的内容&#xff0c;也全部都是视图(Views)返回的内容&#xff0c;那么我们也知道前端包括很多内容。如&#xff1a;HTML&#xff0c;CSS&#xff0c;JavaScript等以及各种插件&#xff0c;才具备完全的页面…

c++获取图像的长宽 opencv_【第一篇:C++与opencv】图片的读取和显示 | 学步园

这里介绍C版本的opencv&#xff0c;和C语言版本有些不同&#xff0c;先看代码^_^【编译环境&#xff1a;opencv2.4.4和VS2008】#include "stdafx.h"#include "opencv2/opencv.hpp"using namespace cv;using namespace std;int _tmain(int argc, _TCHAR* ar…

计算机网络纠错码,计算机网络:纠错

本文概述当数据从发送方发送到接收方时, 纠错码用于检测和纠正错误。纠错可以通过两种方式处理&#xff1a;向后纠错&#xff1a;发现错误后, 接收方会请求发送方重新传输整个数据单元。前向纠错&#xff1a;在这种情况下, 接收器使用纠错码自动纠正错误。单个附加位可以检测到…

安卓线程同步面试_Android面试题

1、java的重载和重写分别是什么含义&#xff1f;重载&#xff1a;(1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在&#xff0c;具有不同的参数个数/类型。重载Overloading是一个类中多态性的一种表现。(2) java的方法重载&#xff0c;就是在类…

html ie7高度,在HTML,IE6和IE7中工作的HTML垂直和水平居中的实用解决方案

什么是一个实用的解决方案,可以在HTML,IE6和IE7中使用HTML中的纵向和横向内容&#xff1f;一些细节&#xff1a;>我正在寻找整个页面的解决方案.>您只需要指定要居中的元素的宽度.在设计时间内不知道元素的高度.>最小化窗口时,只有当所有空白区域消失时才会出现滚动.换…

扭矩大好还是马力大好_翡翠手镯圈口到底是买大好,还是买小好?行家告诉你...

现在的女性多数人都喜欢购买翡翠手镯、翡翠手链、翡翠戒面等&#xff0c;尤其对翡翠手镯不仅能表现出女性的知性优美&#xff0c;还对身体有一定的好处。翡翠手镯是翡翠价值中除了翡翠戒面外最高的二等翡翠。因为翡翠手镯除了那种开口式的镶嵌翡翠手镯其他的都是闭口的&#xf…

一年时间学会日语英语计算机可能么,上海开放大学和上海应用技术大学哪个好,高三选地理能报考上海大学日语系或英语系吗?...

又到了一年一度的开学季了&#xff0c;现在有很多学子都在旁听侧问上海开放大学和上海应用技术大学哪个好这些问题&#xff0c;我也整理了一些信息上海大学好不好&#xff0c;上海开放大学的人才培养目标是( )&#xff0c;吉林大学自考本科计算机应用软件专业需要考过几门&…

启动失败代码2_菲斯曼燃气壁挂炉故障代码大全及解决方法

菲斯曼燃气壁挂炉型号菲斯曼燃气壁挂炉故障代码大全及解决方法以&#xff1a;06故障代码&#xff1a;系统压力过低。设备的反映: 燃气器锁定。措施&#xff1a;检查系统水压&#xff0c;必要时补充加注供暖水。 0A故障代码&#xff1a;燃气压力过低。设备的反映: 燃气器锁定。措…

用html5交换两个变量的值,Python判断两个对象相等的原理 python交换两个变量的值为什么不用中间变量...

python语言设计一个类代表花,其中含2个对象属性,2class flower: def __init__ (self, name, shape): self.name name self.shape shape def showname (self): print(self.name) def showshape(self): print(self.shape)if __name__ __main__: f1flower("baihe",&q…

新型消防机器人作文_未来的消防机器人作文700字

最近发生了一件让全国人民都痛心的的事情——30名救火英雄&#xff0c;为了扑灭熊熊山火&#xff0c;奉献出自己年轻的生命。每当听见刺耳的火灾警报声&#xff0c;我首先想到的是消防官兵一幅幅救火的场面&#xff0c;他们是那么地奋不顾身&#xff1a;每当看到橙红色的身影在…

聘用计算机高级职称,关于咨询高级职称聘用的问题

来信内容&#xff1a;尊敬的领导&#xff1a;你好&#xff01;我是青海省某事业单位的专业技术人员&#xff0c;我于2008年下半年取得计算机技术与软件专业技术资格考试的网络工程师(中级)任职资格&#xff0c;在2011年10月份被聘用为中级工程师&#xff0c;但是在2011年下半年…