QString 是 Qt 编程中常用的类,除了用作数字量的输入输出之外,QString 还有很多其他功能,熟悉这些常见的功能,有助于灵活地实现字符串处理功能。

QString 存储字符串釆用的是 Unicode 码,每一个字符是一个 16 位的 QChar,而不是 8 位的 char,所以 QString 处理中文字符没有问题,而且一个汉字算作是一个字符。

append() 和 prepend()

append() 在字符串的后面添加字符串,prepend() 在字符串的前面添加字符串,如:

 QString str1="卖",str2="拐";
QString str3=str1;
str1.append (str2) ; //str1="卖拐"
str3.prepend (str2) ; //str3="拐卖"

oUpper() 和 toLower()

toUpper() 将字符串内的字母全部转换为大写形式,toLower() 将字母全部转换为小写形式,如:

 QString str1="Hello, World", str2;
str2=str1.toUpper(); //str1="HELLO,WORLD"
str2=str1.toLower(); //str1="hello, world"

count()、size() 和 length()

count()、size() 和 length() 都返回字符串的字符个数,这 3 个函数是相同的,但是要注意,字符串中如果有汉字,一个汉字算一个字符。

 QString str1="NI 好"
N=str1.count() //N=3
N=str1.size() //N=3
N=str1.length() //N=3

trimmed() 和 simplified()

trimmed() 去掉字符串首尾的空格,simplified() 不仅去掉首尾的空格,中间连续的空格也用一个空格替换。

 QString str1=" Are you OK? ", str2;
str2=str1.trimmed () ; //str1="Are you OK? "
str2=str1.simplified(); //str1="Are you OK?"

indexOf () 和 lastIndexOf ()

indexOf() 函数的原型为:

int indexOf (const QString &str, int from =  , Qt::CaseSensitivity cs = Qt::CaseSensitive) const

其功能是在自身字符串内查找参数字符串 str 出现的位置,参数 from 是幵始查找的位置,Qt::CaseSensitivity cs 参数指定是否区分大小写。

lastIndexOf() 函数则是查找某个字符串最后出现的位置。

 QString str1="G:\Qt5Book\QT5.9Study\qw.cpp";
N=str1.indexOf("5.9"); // N=13
N=str1.lastIndexOf("\\"); //N=21

提示,"\" 是转义字符,如果要查找 "\",需要输入 "\\"。

isNull() 和 isEmpty()

两个函数都判读字符串是否为空,但是稍有差别。如果一个空字符串,只有“\0”,isNull() 返回 false,而 isEmpty() 返回 true;只有未赋值的字符串,isNull() 才返回 true。

 QString str1, str2="";
N=str1.isNull () ; // N=true 未赋值字符串变量
N=str2.isNull () ; // N=false 只有"\0"的字符串,也不是 Null
N=str1.isEmpty(); // N=true
N=str2.isEmpty(); // N=true

QString 只要赋值,就在字符串的末尾自动加上 "\0",所以,如果只是要判断字符串内容是否为空,常用 isEmpty()。

contains()

判断字符串内是否包含某个字符串,可指定是否区分大小写。

 QString str1="G:\Qt5Book\QT5.9Study\qw.cpp";
N=str1.contains (".cpp", Qt::CaseInsensitive) ; // N=true,不区分大小写
N=str1.contains (".CPP", Qt::CaseSensitive) ; // N=false,区分大小写

endsWith() 和 startsWith()

startsWith() 判断是否以某个字符串幵头,endsWith() 判断是否以某个字符串结束。

 QString str1=MG:\Qt5Book\QT5.9Study\qw.cpp";
N=str1.endsWith (".cpp", Qt::CaseInsensitive) ; // N=true,不区分大小写
N=str1.endsWith (".CPP", Qt::CaseSensitive) ; // N=false,区分大小写
N=str1.startsWith ("g: ") ; // N=true,缺省为不区分大小写

left() 和 right()

left 表示从字符串中取左边多少个字符,right 表示从字符串中取右边多少个字符。注意,一个汉字被当作一个字符。

 QString str2, str1="学生姓名,男,1984-3-4,汉族,山东";
N=str1.indexOf (",") ; // N=4,第一个","出现的位置
str2=str1.left (N) ; //str2="学生姓名"
N=str1.lastIndexOf (",") ; // N=18,最后一个逗号的位置
str2=str1.right (str1.size()-N-); //str2=”山东",提取最后一个逗号之后的字符串

section()

section() 函数的原型为:

QString section (const QString &sep, int start, int end = -, SectionFlags flags = SectionDefault) const

其功能是从字符串中提取以 sep 作为分隔符,从 start 端到 end 端的字符串。

 QString str2, str1="学生姓名,男,1984-3-4,汉族,山东";
str2=str1.section (",",,); // str2="学生姓名", 第 1 段的编号为 0
str2=str1.section (",",,}; // str2="男"
str2=str1.section (",",,}; // str2="学生姓名,男"
str2=str1.section (",",,); // str2="山东"

QString 还有很多功能函数没有在此介绍,在使用中如果遇到,可查询 Qt 的帮助文件。

Qt QString类及常用函数功能详解的更多相关文章

  1. mybatis中的mapper接口文件以及example类的实例函数以及详解

    ##Example example = new ##Example(); example.setOrderByClause("字段名 ASC"); //升序排列,desc为降序排列 ...

  2. PHP类和对象函数实例详解

    1. interface_exists.class_exists.method_exists和property_exists: 顾名思义,从以上几个函数的命名便可以猜出几分他们的功能.我想这也是我随着 ...

  3. Excel—TEXT函数功能详解

    1.将数值转为文本: "@" 2.转换为特定时间格式: "yyyy年mm月dd日" "yyyy/mm/dd" "yyyy/m/d& ...

  4. 第15.44节、PyQt输入部件:QAbstractSlider派生类QScrollBar滚动条、QSlider滑动条、QDial刻度盘功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.引言 Designer中的输入部件Horizo ...

  5. Delphi中TStringList类常用属性方法详解

    TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 先把要讨论的几个属性列出来: 1.CommaText 2.Delim ...

  6. Jmeter常用功能详解

    嘻嘻,忙碌的一周,马上就到周四了~明天就是周五了,可以去嗨了! 这几天正式成立了一个微信订阅号,旨在免费帮助需要入门软件测试的小白! 各位走过路过的亲,欢迎订阅哦:扫描二维码即可订阅

  7. Fiddler抓取https请求 & Fiddler抓包工具常用功能详解

    Fiddler抓取https请求 & Fiddler抓包工具常用功能详解   先来看一个小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:“你这个页面做的有问 ...

  8. 第15.41节、PyQt(Python+Qt)入门学习:输入部件QComboBox组合框功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 Designer中输入工具部件中的Combo Box组合框与 ...

  9. 第15.10节 PyQt(Python+Qt)入门学习:Qt Designer可视化设计界面组件与QWidget类相关的组件属性详解

    PyQt学习有阵子了,对章节的骨架基本考虑好了,准备本节就写组件的属性的,结果一是日常工作繁忙,经常晚上还要加班,二是Qt的组件属性很多,只能逐一学习.研究和整理,花的时间有点长,不过终于将可视化设计 ...

随机推荐

  1. [CF百场计划]#3 Educational Codeforces Round 82 (Rated for Div. 2)

    A. Erasing Zeroes Description You are given a string \(s\). Each character is either 0 or 1. You wan ...

  2. 2019杭电暑假多校训练 第六场 Snowy Smile HDU - 6638

    很多题解都是简单带过,所以打算自己写一篇,顺便也加深自己理解 前置知识:线段树.线段树维护最大字段和.二维坐标离散化 题解: 1.很容易想到我们需要枚举所有子矩阵来得到一个最大子矩阵,所以我们的任务是 ...

  3. share团队冲刺8

    团队冲刺第八天 昨天:完善代码,解决其中的问题 今天:将除登陆界面之外的界面进行修改和完善,使其美观 问题:bindview不会用,使用时出现问题

  4. javaweb学习——会话技术(一)

    会话: 1.什么是会话:从打开一个浏览器,访问页面,到最终关闭浏览器的一个过程,就是一次会话. 2.会话的特点:包含多个请求,一次完整的会话是只针对一个用户. 3.会话机制:web中常用的技术,用来跟 ...

  5. PAT Advanced 1032 Sharing(25) [链表]

    题目 To store English words, one method is to use linked lists and store a word letter by letter. To s ...

  6. UML-SSD-定义

    1.NextGen例子 SSD来自用例文本 2.定义 1).针对的是用例的一个特定场景 2).参与者与系统之间交互事件(跨系统边界,不画系统内部流转,即黑盒) 比如:收银员 访问系统A.系统B,此时只 ...

  7. Linux-使用syslog记录调试信息

    1.有三个函数:openlog.syslog.closelog 2.一般的log信息都在操作系统的/var/log/messages这个文件中存储着,但是ubuntu中是在/var/log/syslo ...

  8. Linux中PATH、 LIBRARY_PATH、 LD_LIBRARY_PATH和ROS_PACKAGE_PATH

    PATH 保存可执行文件程序路径,我们命令行中每一句能运行的命令都是系统先通过PATH来找到命令执行文件所在的位置,再运行这个命令. 实验:执行echo $PATH 能看到当前环境PATH都是配置了哪 ...

  9. 协议(Protocol)

    协议(Protocol)的基本概念 协议的声明看起来比较类似于Java中一个类的接口,但是和接口不同的是:协议没有父类也不能定义实例变量. 协议是一种特殊的程序设计结构,用于声明专门被别的类实现的方法 ...

  10. 论文翻译——Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank

    Abstract Semantic word spaces have been very useful but cannot express the meaning of longer phrases ...