QT_字符串操作

本文介绍了QT中QString类的常见操作,包括使用“+”和“+=”组合字符串,以及sprintf()和arg()函数进行格式化组合。还涉及到了访问字符、查找位置、截取、转换大小写、计数、去除空格以及判断字符串状态等方法。
摘要由CSDN通过智能技术生成
QT_字符串操作
“+” ,“+=”

“+” 用于组合两个字符串,“+=” 用于将一个字符串追加到另一个字符串的末尾

 QString str1 = "Welcome";
 str1 = str1 + "to you !";   //str1 = "Welcome to you!"
 QString str2 = "Hello,";
 str2 += "World!";           //str2 = "Hello,World!"
组合字符串QString::sprintf()

组合字符串的另一个函数是QString::sprintf(),此函数支持的格式定义和C++库中的函数sprintf()定义一样,例如:

QString str;
str.sprintf("%s","Welcome ");       //str = "Welcome "
str.sprintf("%s"," to you! ");      //str = " to you! "
str.sprintf("%s %s","Welcome "," to you!"); //str = "Welcome  to you!"; 
组合字符串QString::arg()

Qt还提供了另一种方便的字符串组合方式,使用QString::arg()函数,此函数的重载可以处理很多的数据类型。此外,一些重载具有额外的参数对字段的宽度、数字基数或者浮点精度进行控制。相对于QString::sprintf(),QString::arg()是一个比较好的解决方案,因为它类型安全,完全支持Unicode,并且允许改变“/n”参数的顺序。例如:

QString str;
str = QString("%1 was born in %2.").arg("Joy").arg(1993);     //str =  "Joy was born in 1993.";

QString str = QString("%1%2 %3%4 %5%6").arg(BUF[18]).arg(BUF[19]).arg(BUF[20]).arg(BUF[21]).arg(BUF[22]).arg(BUF[23]);
访问字符串中的字符at()

//访问字符串中的字符

返回字符串给定位置的字符

if(exp_str.at(op_index)=='+')
{
     result=num1+num2;
}
查找字符串中某字符首次出现位置indexOf()

在自身字符串内查找参数字符串str出现的位置

可返回某个指定的字符串值在字符串中首次出现的位置。

stringObject.indexOf( value, index );

参数:

value:必需,规定需检索的字符串值。可选的整数参数。

index:规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。

QString str1 = "E:\Notes_Folder\QT\picture";
N = str1.indexOf("QT");    //N =16 
N = str1.indexOf("\\");    //N =18
"\"是转义字符,如果要查找"\",需要输入"\\";
查找字符串中某字符最后出现位置lastIndexOf()

查找某个字符串最后出现的位置

同上!!!
截取字符串mid()

截取指定位置开始的n个字符

QString tempStr1 = temp.mid(15,2);//从索引15的位置截取两个字符

取子串函数;

QString QString::mid(int position, int n = -1) const

返回一个从position开始,长度为n的QString 类型的子串。
当position的下标值超出字符串长度时,返回null;当从position开始的子串长度不够n或n为-1(缺省时的默认值也为-1),函数返回从position开始到结尾的子串。

字符串左边取字符left()

表示从字符串中取左边多少个字符

str.left(3);    //从左边取3字符
字符串右边取字符right()

表示从字符串中取右边多少字符

str.right(3);    //从右边取3字符
字符串追加append()

在字符串的后面添加字符串

QString str1 = "si", str = "rui";
QString str3 = str1;
str1.append(str2);  //"sirui";
str3.prepend(str2); //"ruisi";
字符串前面添加prepend()

在字符串的前面添加字符串

同上!!!
字符串组合arg()

在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(只是有点类似)。

大概有以下三种替换的方法。
使用arg(str1, str2, str3)这种方法进行替换。
使用arg(str1).arg(str2).arg(str3)这种方法进行替换。
使用arg(int, int, int)这种方式进行替换。

str = QString("%1 was born in %2.").arg("Joy").arg(1993); 
//str =  "Joy was born in 1993.";

QString text = QString("%1:%2").arg(123, 5, 10, QChar('0')).arg(456, 5, 10, QChar('0')); 
// text = "00123:00456"
//第一个参数是要填充的数字,第二个参数为最小宽度,第三个参数为进制,第四个参数为当原始数字长度不足最小宽度时用于填充的字符。
字符串内字母全部转为大写toUpper()

将字符串内的字母全部转换为大写形式

str = str.toUpper();
字符串内字母全部转为小写toLower()

将字母全部转换为小写形式

str = str.toLower();
字符串字符个数count()、size()、length()

返回字符串的字符个数,3个函数相同;字符串中如果有汉字,1个汉字算1个字符。

Qstring str1 = "NI好";
N = str1.count();  //N = 3;
N = str1.size();
N = str1.length();
去掉字符串首尾空格trimmed()

去掉字符串首尾的空格

QString str1 = "    Are    you    OK?    ";
str2 = str1.trimmed();       //"Are    you    OK?"
str2 = str1.simplified();    //"Are you OK?"
去掉字符串首尾空格,中间连续的空格用一个空格替换simplified()

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

同上!!!
字符串是否为空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()

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

str.contains("bb"); //判断str是否有“bb”,默认不区分大小写
str.contains("bb", QT::CaseInsensitive);  //不区分大小写
str.contains("bb", QT::CaseSensitive);    //区分大小写
是否以某个字符串开头startsWith()

判断是否以某个字符串开头

str.startsWith("bb"); //判断str开头是否为“bb”,默认不区分大小写
str.startsWith("bb", QT::CaseInsensitive);  //不区分大小写
str.startsWith("bb", QT::CaseSensitive);    //区分大小写
是否以某个字符串结束endWith()

判断是否以某个字符串结束

str.endWith("bb"); //判断str结尾是否为“bb”,默认不区分大小写
str.endWith("bb", QT::CaseInsensitive);  //不区分大小写
str.endWith("bb", QT::CaseSensitive);    //区分大小写
字符串提取以sep为分隔符section()

从字符串中提取以sep作为分隔符,从start端到end端的字符串

QString str2, str1="学生姓名,男,1999-1-1,汉族,陕西";
str2 = str1.section(",",0,0);    //“学生姓名”
str2 = str1.section(",",1,1);    //“男”
str2 = str1.section(",",0,1);    //“学生姓名,男”
str2 = str1.section(",",4,4);    //“陕西”
字符串子串替换repalce

//将从 position 序号开始的 n 个字符的子串替换成 after 字符串

字符串切分以QStringList列表形式返回split()

//用字符或子串 sep 切分当前字符串内容,然后将切分的所有子串以 QStringList 列表形式返回

str.split("#").at(0);//split,以#分割,at(0)从0读
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Three笔记

有用的话赏点吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值