1、QString的常用功能函数
(1)QString::QString()
构造一个空字符串,不被分配任何东西,也就是说长度和数据指针都为0;
(2)bool QString::isNull() const
判断字符串是否为NULL
(3)bool QString::isEmpty() const
判断字符串是否为空
(2)和(3)的区别,就是NULL字符串和空字符串的区别,一个NULL字符串就是使用QString的默认构造函数或者以 const char* 0 作为参数的构造函数创建的QString字符串对象。而一个空字符串是一个大小为0的字符串。一个NULL字符串一定是一个空字符串,而一个空字符串就不一定是NULL字符串。如下:
QString str1; //str1.unicode() == 0, str1.length() == 0
str1.isNull(); //true,因为str1.unicode = 0
str1.isEmpty() //true
QString str2("");
str2.isNull(); //false
str2.isEmpty(); //true
(4)int QString::length() const
返回字符串的长度,NULL字符串和空字符串的长度都为0
(5)QString & QString::append(const QString & str)
字符串追加,把str添加到字符串,并返回该字符串的引用
后拼接:str1.append(str2);//把str2加到str1后面
前拼接:str1.prepend(str2);//把str2加到str1前面
中间插入就用下面的insert函数
(6)QString QString::arg(const QString & a, int fieldwidth = 0) const
返回使用a来替换最低层出现的%i(i为'1'或'2'或……'9')的字符串。
fieldwidth值指定了填充到a中的最小空间。正值将产生右对齐文本,负值将产生左对齐文本。
(7)const QChar QString::at(int i) const
返回在索引i处的字符,或者如果i超过字符串的长度返回0。
使用这玩意的时候最好做个判断,越界会崩溃
(8)int QString::compare(const QString & s1, const QString & s2)
可用来比较字符串s1和s2是否一致,如果s1小于、等于或者大于s2,就返回小于、等于或者大于0的整数。
这个比较是专有的基于字符的数字Unicode值并且非常快
int a = QString::compare( "def", "abc" ); // a > 0
int b = QString::compare( "abc", "def" ); // b < 0
int c = QString::compare(" abc", "abc" ); // c == 0
(9)bool QString::contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
比较字符串中是否包含str,第二个参数一般不填,默认是CaseSensitive,就是区分大小写,Qt::CaseInsensitive就不区分,这两个是qt中两个枚举值,前者value为1,后者为0
(10)bool QString::startsWith(const QString & s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
如果字符串以s开始,返回真,否则返回假。
(11)bool QString::endsWith(const QString & s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const
如果字符串以结束,返回真,否则返回假。
(12)QString &fill(QChar c, int size = -1);
填充字符串为len个字符的值c,并且返回字符串的引用。
size默认是负数,即以当前字符串的长度为准。若指定size后,填充后的字符串以指定size为长度
QString str;
str.fill('1'); //输出""
str.fill('1',1);//输出"1"
QString str1 = "aabbcc";
str1.fill('1'); //输出"111111"
str1.fill('1',2);//输出"11"
(13)int QString::find(const QRegExp & rx, int index = 0) const
(可能我的qt版本过低,没有找到该函数。。。)
从位置index开始,找到常量正则表达式rx第一次出现的位置。
如果index为-1,搜索从最后一个字符开始,如果是-1,从紧挨着最后一个字符的字符开始,依此类推。
返回rx第一次出现的位置,如果rx没有被找到,返回-1。
QString string( "bananas" );
int i = string.find( QRegExp("an"), 0 ); // i == 1
(14)QString & QString::insert(int index, const QString & s)
把s插入到字符串的index位置之前。
如果index超过字符串的结尾,字符串被填充空格扩展到index长度并且然后s被添加,返回这个字符串的引用。
(15)QString left(int n) const;
返回包含字符串最左面的n个字符的子字符串。
如果n超过字符串的长度,则整个字符串被返回。
左截取: QString x = "Pineapple";
QString y = x.left(4); // y == "Pine"
右截取: QString x = "Pineapple";
QString y=x.right(5); //y==apple
中间截取就用下面的mid函数
(16)QString QString::lower() const
返回由这个字符串转换的小写字符串。
(17)QString QString::number (long n, int base = 10)
把数字n转换为字符串的方便函数,n被基于base表示,默认为10,并且必须在2到36之间。
long a = 63;
QString str = QString::number(a, 16); // str == "3f"
QString str = QString::number(a, 16).upper(); // str == "3F"
(18)QString & QString::setNum(long n, int base = 10)
设置字符串为打印的数据n,n是基于base并且返回这个字符串的引用。
base默认为10并且必须在2到36之间。
QString string;
string = string.setNum( 1234 ); // string == "1234"
(19)int QString::toInt(bool *ok = Q_NULLPTR, int base =10) const
返回由这个字符串转化的int值,是基于base的,默认为10并且必须在2到36之间。
如果转化发生错误,*ok被设置为假(除非ok为0,这是默认的)并且返回0。否则*ok被设置为真。
QString str( "FF" );
bool ok;
int hex = str.toInt( &ok, 16 ); // hex == 255, ok == TRUE
int dec = str.toInt( &ok, 10 ); // dec == 0, ok == FALSE
(20)QString QString::trimmed() const
移除字符串两端的空白字符。
(21)QString QString::mid(int index, int len = -1) const
返回包含这个字符串从index位置开始len个字符的字符串。
如果这个字符串为空或者index超出范围,返回零。
如果index + len超过这个字符串的长度,返回从index开始的整个字符串。
类似于截取字符串
(22)QString & QString::remove(int index, int len)
从字符串中的index位置开始移除len个字符并且返回这个字符串的引用。
如果index超出字符串的长度,就什么也不发生。
如果index在字符串中间,但是index加上len超过字符串的结尾,这个字符串将从index开始被截短。
(23)QString & QString::replace(int index, int len, const QString & s)
从字符串中的index位置开始使用s替换len个字符,并且返回这个字符串的引用。
如果index超出字符串的长度,就什么也不会发生。
如果index有效并且index + len超过字符串的结尾,那么这个字符串将从index开始被截断,并且s被添加到字符串的结尾。
(24)QString::section()
返回截取的单个或多个字符串
(25)QString::split()
返回被截取的zifuc的QStringList
(26)一些别的函数的示例:
//截取或填充
QString s = "apple";
QString t = s.leftJustified(8, '.'); // t == "apple..."
//尾删
QString str("LOGOUT\r\n");//从尾部删除n个字符,返回剩余字符
str.chop(2); // str == "LOGOUT"
//清空
QString s = "apple";
s.clear(); //s==""
//重复
QString str("ab");
str.repeated(4); // returns "abababab"
//字符数
int nToalLenth = string.size();
//索引值
int nIndex = string.indexOf("****");
//以指定字符串为分割符,进行分割
//返回一个或多个分割后的值
QString str;
QString csv = "forename,middlename,surname,phone";
QString path = "/usr/local/bin/myapp"; // First field is empty
QString::SectionFlag flag = QString::SectionSkipEmpty;
str = csv.section(',', 2, 2); // str == "surname"
str = path.section('/', 3, 4); // str == "bin/myapp"
str = path.section('/', 3, 3, flag); // str == "myapp"
//如果索引值是负数,则从右到左取值
str = csv.section(',', -3, -2); // str == "middlename,surname"
str = path.section('/', -1); // str == "myapp"
//如果返回QStringList
QString str = "a,,b,c";
QStringList list1 = str.split(','); // list1: [ "a", "", "b", "c" ]
QStringList list2 = str.split(',', QString::SkipEmptyParts); // list2: [ "a", "b", "c" ]
//运用split 将字符竖向排列
QString strText = QStringLiteral("一去二三里,烟村四五家。");
pLabel->setText(strText.split("", QString::SkipEmptyParts).join("\n"));
pLabel->setAlignment(Qt::AlignCenter);
//去除全部witeSpace符号:'\t', '\n', '\v', '\f', '\r', and ' '.
QString str = " lots\t of\nwhitespace\r\n ";
str = str.simplified(); // str == "lots of whitespace";