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读