本文总结一下QString的常用方法,这些常用方法的接口和c++ String非常类似,下面开始进入正题:

Public Functions:

QString构造函数提供的接口:

QString(QChar ch);//构建单个字符串的QStringQString(int size, QChar ch);//以n个某字符构建QStringQString(const QString &other);//从已存在的QString拷贝创建QString(QString &&other);//指向已存在的QString(两个QString对象指向同一空间)QString(const char *str);//从char字符串创建QString

开头、结尾添加:

QString & append(const QString &str);//从末尾追加QStringQString & append(const QChar *str, int len);//从末尾追加QChar字符串QString & append(QChar ch);//从末尾追加QChar单个字符QString & append(const QStringRef &reference);//从末尾追加QStringRef QString & append(const char *str);//从末尾追加char字符串QString & append(const QByteArray &ba);//从末尾追加QByteArray//从开头添加,接口用法类似于append
QString & prepend(const QString &str)
QString & prepend(const QChar *str, int len)
QString & prepend(QChar ch)
QString & prepend(const QStringRef &str)
QString & prepend(const char *str)
QString & prepend(const QByteArray &ba)//STL兼容追加函数
void push_back(const QString &other)
void push_back(QChar ch)
void push_front(const QString &other)
void push_front(QChar ch)

格式化输入:

/*
使用age方法
支持:QStringqulonglonglongulongintuintshortushortdoublecharQCharqlonglongQStringViewQLatin1String以int为例:
arg(int a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const参数1:a代表要格式化输入的10进制int值
参数2:fieldWidth指定填充a并使用字符fillChar填充的最小空间量。正值产生右对齐的文本;负值产生左对    齐的文本。
参数3:base指定格式化输入所用的进制数(2,8,10,16)
*/
QString str;
str = QString("Decimal 63 is %1 in hexadecimal").arg(63, 0, 16);
// str == "Decimal 63 is 3f in hexadecimal"str = QString("%1 %2 %3").arg(12345).arg(12345).arg(12345, 0, 16);
// str == "12345 12,345 3039"

数字转换为字符串

QString &setNum(int n, int base = 10)
QString &setNum(ushort n, int base = 10)
QString &setNum(short n, int base = 10)
QString &setNum(uint n, int base = 10)
QString &setNum(long n, int base = 10)
QString &setNum(ulong n, int base = 10)
QString &setNum(qlonglong n, int base = 10)
QString &setNum(qulonglong n, int base = 10)
QString &setNum(float n, char format = 'g', int precision = 6)
QString &setNum(double n, char format = 'g', int precision = 6)QString str;
str.setNum(1234);       // str == "1234"QString str1;
str1.setNum(1234.56);       // str1 == "1234.56"

字符串转数字

double toDouble(bool *ok = nullptr) const
float toFloat(bool *ok = nullptr) const
int toInt(bool *ok = nullptr, int base = 10) const
long toLong(bool *ok = nullptr, int base = 10) const
qlonglong toLongLong(bool *ok = nullptr, int base = 10) const
uint toUInt(bool *ok = nullptr, int base = 10) const
ulong toULong(bool *ok = nullptr, int base = 10) const
qulonglong toULongLong(bool *ok = nullptr, int base = 10) const
ushort toUShort(bool *ok = nullptr, int base = 10) const
short toShort(bool *ok = nullptr, int base = 10) constQString str = "1234.56";
double val = str.toDouble();   // val == 1234.56

取单个字符


const QChar at(int position) //等效于string[position]QChar back() //取最后一个字符,等效于at(size() - 1)QChar front() //取第一个字符,等效于at(0)

删除字符相关

//从末尾删除n个字符
void QString::chop(int n) //返回包含此字符串的size() - len最左字符的子字符串。原字符串不会被修改
QString QString::chopped(int len) const//清除字符串内容,并使其为空
void QString::clear()//从指定位置开始删除n个字符
QString &remove(int position, int n)//删除此字符串中出现的所有ch字符,cs参数指定了是否对大小写敏感
QString &remove(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive)//删除此字符串中出现的所有str
QString &remove(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive)//删除所有满足指定正则表达式的子项
QString &remove(const QRegExp &rx)
QString &remove(const QRegularExpression &re)QString str("LOGOUT\r\n");
str.chop(2);// str == "LOGOUT"QString str("LOGOUT\r\n");
QString str1 = str.chop(2);// str == "LOGOUT\r\n",str1 = "LOGOUT"QString str("LOGOUT\r\n");
str.clear()//str.isNull=true

是否包含

//是否包含某个QString
bool contains(const QString &str, Qt::CaseSensitivity cs = ...) const
//是否包含某个字符
bool contains(QChar ch, Qt::CaseSensitivity cs = ...) const
//是否包含某个拉丁字符串
bool contains(QLatin1String str, Qt::CaseSensitivity cs = ...) const
//以正则表达式的形式确定是否满足包含条件
bool contains(const QRegExp &rx) const
bool contains(QRegExp &rx) const
bool contains(const QRegularExpression &re) const
bool contains(const QRegularExpression &re, QRegularExpressionMatch *match) const

出现次数计算

//返回QString出现的次数
int count(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
//返回字符ch出现的次数
int count(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
//返回满足正则表达式条件的内容项出现的次数
int count(const QRegExp &rx) const
int count(const QRegularExpression &re) const

指定下标获取


//参数1:目标内容(可以是QString,QChar,也可以是正则表达式)
//参数2:开始查找的位置
int indexOf(const QString &str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
int indexOf(QChar ch, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
int indexOf(QLatin1String str, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
int indexOf(const QRegExp &rx, int from = 0) const
int indexOf(QRegExp &rx, int from = 0) const
int indexOf(const QRegularExpression &re, int from = 0) const
int indexOf(const QRegularExpression &re, int from, QRegularExpressionMatch *rmatch) constQString x = "sticky question";
QString y = "sti";
x.indexOf(y);               // returns 0
x.indexOf(y, 1);            // returns 10
x.indexOf(y, 10);           // returns 10
x.indexOf(y, 11);           // returns -1//类似于indexOf,只不过是返回最后出现的位置
int lastIndexOf(const QString &str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
int lastIndexOf(QChar ch, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
int lastIndexOf(QLatin1String str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
int lastIndexOf(const QRegExp &rx, int from = -1) const
int lastIndexOf(QRegExp &rx, int from = -1) const
int lastIndexOf(const QRegularExpression &re, int from = -1) const
int lastIndexOf(const QRegularExpression &re, int from, QRegularExpressionMatch *rmatch) const

以xx结尾判断,以xxx开头判断

//判断是否以某个QString结尾
bool endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
//判断是否以某个字符结尾
bool endsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) constbool startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
bool startsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

字符串填充


QString &fill(QChar ch, int size = -1)QString str = "Berlin";
str.fill('z');
// str == "zzzzzz"str.fill('A', 2);
// str == "AA"

插入


QString &insert(int position, const QString &str)
QString &insert(int position, const QChar *unicode, int size)
QString &insert(int position, QChar ch)
QString &insert(int position, const char *str)
QString &insert(int position, const QByteArray &str)QString str = "Meal";
str.insert(1, QString("ontr"));
// str == "Montreal"

是否为空、是否全部小写字母、是否全部大写字母

bool isEmpty() const
bool isNull() const
bool isLower() const
bool isUpper() constisEmpty、isNull区别QString().isEmpty();            // returns true
QString("").isEmpty();          // returns true
QString("x").isEmpty();         // returns false
QString("abc").isEmpty();       // returns falseQString().isNull();             // returns true
QString("").isNull();           // returns false
QString("abc").isNull();        // returns false//大多数情况下,用isEmpty较为稳妥

转换为全部大写或全部小写

QString toLower() const
QString toUpper() constQString str = "The Qt PROJECT";
str = str.toLower();        // str == "the qt project"

左、右、中间截取

//返回包含字符串最左n个字符的子字符串。
QString left(int n) const
//返回包含字符串最左n个字符的子字符串,如果个数不够的话用fill填充空缺部分。
QString leftJustified(int width, QChar fill = QLatin1Char(' '), bool truncate = false) const
//返回对字符串最左n个字符的子字符串引用。
QStringRef leftRef(int n) const//返回包含此字符串的size() - len最左字符的子字符串。
QString QString::chopped(int len) const//在指定位置截断字符串,会直接修改原字符串
void QString::truncate(int position)QString x = "Pineapple";
QString y = x.left(4);      // y == "Pine"QString s = "apple";
QString t = s.leftJustified(8, '.');    // t == "apple..."QString x = "Pineapple";
QStringRef y = x.leftRef(4);        // y == "Pine"//返回从下标position开始取的n个字符串,如果n=-1,则从下标position开始取到字符串末尾
QString mid(int position, int n = -1) const
QStringRef midRef(int position, int n = -1) constQString x = "Nine pineapples";
QString y = x.mid(5, 4);            // y == "pine"
QString z = x.mid(5);               // z == "pineapples"QString x = "Nine pineapples";
QStringRef y = x.midRef(5, 4);      // y == "pine"
QStringRef z = x.midRef(5);         // z == "pineapples"//用法类似于left
QString right(int n) const
//用法类似于leftJustified
QString rightJustified(int width, QChar fill = QLatin1Char(' '), bool truncate = false) const
//用法类似于leftRef
QStringRef rightRef(int n) const

根据指定项截取

//该函数首先会根据sep,将QString进行分割,然后从start开始取,取到end结束
//如果end或start为负值,则代表从右往左取
QString section(QChar sep, int start, int end = ..., QString::SectionFlags flags = SectionDefault) constQString str;
QString csv = "forename,middlename,surname,phone";
QString path = "/usr/local/bin/myapp"; // First field is empty
QString::SectionFlag flag = QString::SectionSkipEmpty;//[0]:"forenam"
//[1]:"middlename"
//[2]:"surname"
//[3]:"phon"
//取出开始下标为2,结束下标为2的子字符串:
//str == "surname"
str = csv.section(',', 2, 2);//[0]:""
//[1]:"usr"
//[2]:"local"
//[3]:"bin"
//[4]:"myapp"
//取出下标为3,结束下标为4的子字符串:
//str == "bin/myapp"
str = path.section('/', 3, 4);  //flag指明为忽略空字符串:
//[0]:"usr"
//[1]:"local"
//[2]:"bin"
//[3]:"myapp"
str = path.section('/', 3, 3, flag); // str == "myapp"//以QString分割,其他同上
QString section(const QString &sep, int start, int end = -1, QString::SectionFlags flags = SectionDefault) const//以正则表达式分割,其他同上
QString section(const QRegExp &reg, int start, int end = -1, QString::SectionFlags flags = SectionDefault) const
QString section(const QRegularExpression &re, int start, int end = -1, QString::SectionFlags flags = SectionDefault) const

根据指定项切割

QStringList split(const QString &sep, QString::SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QStringList split(QChar sep, QString::SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QStringList split(const QRegExp &rx, QString::SplitBehavior behavior = KeepEmptyParts) const
QStringList split(const QRegularExpression &re, QString::SplitBehavior behavior = KeepEmptyParts) constQString str = "a,,b,c";QStringList list1 = str.split(',');
// list1: [ "a", "", "b", "c" ]QStringList list2 = str.split(',', QString::SkipEmptyParts);
// list2: [ "a", "b", "c" ]QString str = "abc";
auto parts = str.split("");
// parts: {"", "a", "b", "c", ""}QString str = "/a/b/c/";
auto parts = str.split('/');
// parts: {"", "a", "b", "c", ""}//用法和上面类似,返回的是QString引用
QVector<QStringRef> splitRef(const QString &sep, QString::SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QVector<QStringRef> splitRef(QChar sep, QString::SplitBehavior behavior = KeepEmptyParts, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
QVector<QStringRef> splitRef(const QRegExp &rx, QString::SplitBehavior behavior = KeepEmptyParts) const
QVector<QStringRef> splitRef(const QRegularExpression &re, QString::SplitBehavior behavior = KeepEmptyParts) const

返回指定重复次数的字符串


QString repeated(int times) constQString str("ab");
str.repeated(4);            // returns "abababab"

替换

//从指定下标开始替换
QString &replace(int position, int n, const QString &after)
QString &replace(int position, int n, const QChar *unicode, int size)
QString &replace(int position, int n, QChar after)
//单个字符替换(替换所有)
QString &replace(QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
//将字符串中的所有befor替换为after
QString &replace(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
//将字符串中的所有ch替换为after
QString &replace(QChar ch, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)
//将字符串中所有符合正则表达式检索条件的字符串项替换为after
QString &replace(const QRegExp &rx, const QString &after)
QString &replace(const QRegularExpression &re, const QString &after)

交换

//用这个字符串交换字符串other。这个操作非常快,从来没有失败过。
void swap(QString &other)

转换为std::string


//std String
std::string toStdString() const

去掉开头、结尾的空格字符

QString trimmed() constQString str = "  lots\t of\nwhitespace\r\n ";
str = str.trimmed();
// str == "lots\t of\nwhitespace"

重载的运算符

!=、+、+=、<、<=、=、==、>、>=、[ ]、<<、>>

QString常用方法介绍相关推荐

  1. Java基础-Date类常用方法介绍

    Java基础-Date类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.毫秒值概念 我们在查阅Date类的API文档时,会发现这样的一句话:"The cl ...

  2. java基础-BigDecimal类常用方法介绍

    java基础-BigDecimal类常用方法介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.BigDecimal类概述 我们知道浮点数的计算结果是未知的.原因是计算机二进制 ...

  3. linux rm 命令删除文件恢复_linux文件处理命令之rm常用方法介绍

    命令名称:rm 命令英文原意:remove 命令所在路径:/bin/rm 执行权限:所有用户 语法:rm -r [文件或目录] -r 删除目录 功能描述:删除文件 mv是删除文件的命令,使用时可以指定 ...

  4. java Math类的常用方法介绍

    java Math类的常用方法介绍 代码块 public class MainTest {public static void main(String[] args) {//求sin值double s ...

  5. linux localtime 线程安全,LocalDate、LocalTime、LocalDateTime常用方法介绍(线程安全)...

    一.JDK Release Notes: https://www.oracle.com/technetwork/java/javase/jdk-relnotes-index-2162236.html? ...

  6. Android MediaPlay 常用方法介绍

    收集一些 MediaPlayer 常用方法介绍 方法:create(Context context, Uri uri) 解释:静态方法,通过Uri创建一个多媒体播放器.方法:create(Contex ...

  7. 详解python中GPU版本的opencv常用方法介绍

    更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接:好看站 http://www.nrso.net/ 高州阳光论坛https://www.hnthzk.com/ 引 ...

  8. Underscore.js常用方法介绍

    Underscore.js是一个很精干的库,压缩后只有4KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了JavaScript的编程.MVC框架Backbone.js就将这个库作为自 ...

  9. 学徒浅析Android开发:第三讲——Dialog的常用方法介绍(二)

    经过(一)的基础介绍,现在小编将在(二)中给大家介绍以下几种效果: 1.点击查看组图(模拟QQ空间图片浏览) 2.缩略图放大(自定义Dialog) 3.动态加载进度条 一.点击产看组图(模拟QQ空间图 ...

最新文章

  1. 五种常见的PHP设计模式
  2. HDU 6343.Problem L. Graph Theory Homework-数学 (2018 Multi-University Training Contest 4 1012)
  3. 2021 河南 高考成绩查询,2021河南高考成绩查询入口
  4. debian8.7.1安装zabbix3.2
  5. 单片机shell命令_nr_micro_shell
  6. More Effective C++ 笔记
  7. python编写程序判断数据类型_python中如何判断一个变量的数据类型
  8. HTML+JS实现可编辑表格
  9. 如何将npy导入matlab,如何在Matlab中读取.npy文件(How to read .npy files in Matlab)
  10. legacy引导gpt分区_装系统用什么分区?gpt分区及mbr分区详细教程(附带bios设置)
  11. netty源码解读六(内存池相关)
  12. 百度网盘文件管理助手 – 多账号多开浏览器
  13. Rhythmbox中mp3中文乱码解决
  14. 用vs打开已有web项目运行时显示网页无法访问
  15. samba共享文件时端口问题
  16. 2023最新JDK下载、安装与配置教程(jdk17.0.5以及jdk11.0.17)
  17. 优秀网页翻译:高精度 10MHz GPS 驯服钟 (GPSDO) - Part 4
  18. 胡玮炜离职,摩拜成美团大包袱,王兴后悔了吗?
  19. After succeed
  20. Tag 创建、查看、根据tag回滚

热门文章

  1. CEF 、chromium源码下载前相关代理配置
  2. 程序员们,再不行动就来不及了!
  3. 【LGCN】如何理解Large-Scale Learnable Graph Convolutional Networks?
  4. 《交互式程序设计 第2版》一1.2.4 交互语言
  5. 阴阳师真八歧大蛇最低配置攻略,蛇黑切
  6. 20170421康拓普面试题
  7. 是否可以同时学习两门编程语言?——我的语言学习经验告诉我不行
  8. 4.目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还可能会延误抢救时机。
  9. 河北工程大学计算机科学与技术分数线,2019年河北工程大学优势专业排名及分数线...
  10. 6 客户端认证方式 之 client_secret_basic client_secret_post