您的位置:

QString截取详解

一、QString简介

QString是Qt框架中的一个重要类,是用于处理字符串的类。它基于Unicode,并支持很多Unicode字符集。许多Qt框架中的API都需要使用QString来传递字符串。

二、QString截取的基本用法

QString类提供了很多方法用于字符串的操作,其中截取字符串的方法也是非常常用的。主要有mid()、left()、right()三个方法可以使用,具体如下:

QString str = "Hello, world!";
QString mid_str = str.mid(1, 3); // 输出为 "ell"
QString left_str = str.left(5); // 输出为 "Hello"
QString right_str = str.right(6); // 输出为 "world!"

mid()方法用于截取字符串中的一段,第一个参数是开始位置,第二个参数是要截取的字符数。left()和right()方法则根据参数截取字符串的前几个或后几个字符。

三、QString截取指定字符

有时我们需要在字符串中截取指定字符之前或之后的部分,这时可以使用indexOf()方法和QStringRef类来实现。如下例:

QString str = "https://www.example.com/index.html";
int index = str.indexOf('/'); // 返回第一次出现'/'的下标0
QStringRef sub_str = str.leftRef(index); // 取从字符串开头到'/'之前的部分
// 输出为 https:
qDebug() << sub_str.toString();

这里使用indexOf()方法找到第一个'/'的位置,然后使用leftRef()方法取从字符串开头到'/'之前的部分。为了避免在QStringRef中拷贝sub_str使用toString()方法进行转换。

四、QString截取以某个字符为结尾的子串

对于一些需要字符串结尾为特定字符的操作,如提取文件名、URL等,可以使用QStringList类中的split()方法,将字符串按照结尾字符划分成多个子串,然后取最后一个子串即可。如下例:

QString str = "https://www.example.com/index.html";
QStringList str_list = str.split("/");
QString file_name = str_list.last(); // 取最后一个子串
// 输出为 index.html
qDebug() << file_name;

先使用split()方法将字符串按照'/'分割成子串,再取最后一个子串即可得到截取结果。

五、QString截取指定宽度的文本

在显示文本时,为了使文本长度符合界面宽度,有时会对超出宽度的文本进行省略号省略。可以使用QString中的truncate()方法对文本进行截取。如下例:

QString str = "Hello, world!";
int width = 8;
str.truncate(width); // 截取指定宽度文本
// 输出为 Hello, w...
qDebug() << str;

这里给定文本宽度为8,超过这个宽度的部分会被省略号替换。