【Qt | Qstring】Qstring详细介绍、例子代码(字符串的添加、删除、修改、查询、截断、删除空白字符等)

wkd_007 2024-10-13 09:35:01 阅读 54

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀

🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭

⏰发布时间⏰: 2024-09-24 09:10:24

本文未经允许,不得转发!!!

目录

🎄一、概述🎄二、增加、组合、拼接 字符串✨2.1 构造字符串✨2.2 给 QString 对象 赋值✨2.3 添加字符串到 QString 对象尾部✨2.4 添加字符串到 QString 对象开头✨2.5 添加字符串到 QString 对象指定位置✨2.6 其他添加、拼接字符串的方式

🎄三、QString对象的 清空、 删除✨3.1 清空字符串✨3.2 从字符串末尾删除字符✨3.3 删除指定字符串、指定位置的子字符串✨3.4 删除空白字符✨3.5 截断字符串

🎄四、修改 字符串✨4.1 修改字符串大小✨4.2 替换掉字符串的字符✨4.3 交换字符串✨4.3 字符串格式转换

🎄五、从字符串 查询✨5.1 查询字符串的字符个数✨5.2 查询字符串的一个字符✨5.3 查询字符串是否为空、是否为大小写✨5.4 查询是否包含指定的 子字符串✨5.5 查询 子字符串 的位置✨5.6 查询 子字符串 的出现的个数✨5.7 获取一个 子字符串✨5.8 将字符串分割成多个 子字符串

🎄六、其他


在这里插入图片描述

在这里插入图片描述

🎄一、概述

标准 C++ 提供了两种字符串: 一种是 C 语言风格的以 <code>\0 字符结尾的字符数组;另 一种是字符串类 String 。 而 Qt 字符串类 QString 的功能更强大。

QString 类保存 16 位 Unicode 值,提供了丰富的操作、查询和转换等函数。该类还进行了使用隐式共享 (implicit sharing) 、高效的内存分配策略等多方面的优化。

QString存储一个16位QChar字符串,其中每个QChar对应一个UTF-16编码单元。(编码值大于65535的Unicode字符使用代理对存储,即两个连续的QChar。)

Unicode是一个国际标准,支持目前使用的大多数书写系统。它是US-ASCII (ANSI X3.4-1986)和Latin-1 (ISO 8859-1)的超集,并且所有US-ASCII/Latin-1字符都在相同的代码位置上可用。

实现时,QString使用隐式共享(implicit sharing,也就是写时复制)来减少内存使用并避免不必要的数据复制。这也有助于减少存储16位字符而不是8位字符的固有开销。

除了QString, Qt还提供了QByteArray类来存储原始字节和传统的8位’\0’结尾的字符串。在大多数情况下,QString是您想要使用的类。 它在整个Qt API中使用,并且Unicode支持确保如果您希望在某个时候扩展应用程序的市场,您的应用程序将易于翻译。适合使用QByteArray的两种主要情况是:当您需要存储原始二进制数据时,以及当内存比较紧张时(如在嵌入式系统中)。


在这里插入图片描述

🎄二、增加、组合、拼接 字符串

✨2.1 构造字符串

QString 的构造函数有下面几个:

<code>QString()

QString(const QChar *unicode, int size = -1)

QString(QChar ch)

QString(int size, QChar ch)

QString(QLatin1String str)

QString(const QString &other)

QString(QString &&other)

QString(const char *str)

QString(const QByteArray &ba)

其中,最简单的,也最常用的是,直接用一个以\0结尾的char*字符串给QString对象初始化,如下:

// 1.1 QString(const char *str)

QString str_first("str_first");

qDebug() << str_first << "," << str_second; // "str_first" , "str_second"

下面是其他构造函数例子:

// 1.2 QString(const QChar *unicode, int size = -1)

static const QChar data[4] = { 65, 66, 67, 68 }; // ABCD 的UniCode码

QString str_data(data, 4);

qDebug() << str_data ; // "ABCD"

// 1.3 QString(QChar ch)

// QString(int size, QChar ch)

QChar qchar_a = 'a';

QString str_qchar(qchar_a);

QString str_qchar2(2, qchar_a);

qDebug() << str_qchar << "," << str_qchar2; // "a" , "aa"

// 1.4 QString(QLatin1String str)

QString str_Latin1(QLatin1String("static"));

qDebug() << str_Latin1; // "static"

// 1.5 QString(const QString &other)

// QString(QString &&other)

QString strString(str_first);

qDebug() << strString; // "str_first"

// 1.6 QString(const QByteArray &ba)

QString strByteArray(QByteArray("efgh"));

qDebug() << strByteArray; // "efgh"

其中,QLatin1String类提供了 US-ASCII/Latin-1 编码字符串字面值的薄包装。


✨2.2 给 QString 对象 赋值

如果实例化一个 QString 对象后,可以使用 = 运算符给该对象赋值,函数原型如下:

QString &operator=(const QString &other)

QString &operator=(QChar ch)

QString &operator=(QLatin1String str)

QString &operator=(QString &&other)

QString &operator=(const char *str)

QString &operator=(const QByteArray &ba)

QString &operator=(char ch)

🌰举例子:

QString str_second = str_first;

qDebug() << (str_second = QChar('A'));

qDebug() << (str_second = QLatin1String("str_second1"));

qDebug() << (str_second = "str_second2");

qDebug() << (str_second = QByteArray("str_second3"));

qDebug() << (str_second = 'B');

🎯运行结果:

在这里插入图片描述


✨2.3 添加字符串到 QString 对象尾部

添加字符串到 QString 对象尾部的相关函数原型如下:

<code>// 添加到字符串尾部

QString &append(const QString &str)

QString &append(const QChar *str, int len)

QString &append(QChar ch)

QString &append(const QStringRef &reference)

QString &append(QLatin1String str)

QString &append(const char *str)

QString &append(const QByteArray &ba)

// 提供此函数是为了兼容STL,将给定的其他字符串附加到该字符串的末尾。它相当于append(other)。

void push_back(const QString &other)

void push_back(QChar ch)

// += 运算符(公开成员函数)

QString &operator+=(const QString &other)

QString &operator+=(QChar ch)

QString &operator+=(const QStringRef &str)

QString &operator+=(QLatin1String str)

QString &operator+=(const char *str)

QString &operator+=(const QByteArray &ba)

QString &operator+=(char ch)

// + 运算符(友元函数)

const QString operator+(const QString &s1, const QString &s2)

const QString operator+(const QString &s1, const char *s2)

const QString operator+(const QString &s, char ch)

上面这几种最常用的是+运算符,使用比较方便,而且可以连续加,如:a+b+c。

🌰举例子:

// 2.3 添加字符串到 QString 对象尾部

QString strAdd("strAdd");

qDebug() << strAdd.append(QString("1"));

qDebug() << strAdd.append(QChar('2'));

qDebug() << strAdd.append("3");

qDebug() << strAdd.append(QByteArray("4"));

qDebug(" ");

strAdd.push_back(QString("5"));

qDebug() << strAdd;

strAdd.push_back(QString('6'));

qDebug() << strAdd;

qDebug(" ");

qDebug() << (strAdd += QString("7"));

qDebug() << (strAdd += QChar('8') );

qDebug() << (strAdd += "9" );

qDebug() << (strAdd += 'a' );

qDebug() << (strAdd += QByteArray("b") );

qDebug(" ");

qDebug() << (strAdd + QString("c"));

qDebug() << (strAdd + "d");

qDebug() << (strAdd + 'e');

qDebug(" ");

🎯运行结果:

在这里插入图片描述


✨2.4 添加字符串到 QString 对象开头

<code>// 将字符串str添加到该字符串的开头,并返回对该字符串的引用。

QString &prepend(const QString &str)

QString &prepend(const QChar *str, int len)

QString &prepend(QChar ch)

QString &prepend(const QStringRef &str)

QString &prepend(QLatin1String str)

QString &prepend(const char *str)

QString &prepend(const QByteArray &ba)

// 提供此函数是为了兼容STL,将给定的其他字符串附加到该字符串的末尾。它相当于prepend(other)。

void push_front(const QString &other)

void push_front(QChar ch)

// + 运算符(友元函数)

const QString operator+(const char *s1, const QString &s2)

const QString operator+(char ch, const QString &s)

🌰举例子:

// 2.4 添加字符串到 QString 对象开头

QString strHead("strHead");

qDebug() << strHead.prepend(QString("1"));

qDebug() << strHead.prepend(QChar('2'));

qDebug() << strHead.prepend(QLatin1String("3"));

qDebug() << strHead.prepend("4");

qDebug() << strHead.prepend(QByteArray("5"));

qDebug(" ");

strHead.push_front(QString("6"));

qDebug() << strHead;

strHead.push_front(QChar('7'));

qDebug() << strHead;

qDebug(" ");

qDebug() << "8" + strHead;

qDebug() << '9' + strHead;

qDebug(" ");

🎯运行结果:

在这里插入图片描述


✨2.5 添加字符串到 QString 对象指定位置

<code>// 插入到指定位置

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 QStringRef &str)

QString &insert(int position, QLatin1String str)

QString &insert(int position, const char *str)

QString &insert(int position, const QByteArray &str)

🌰举例子:

// 2.5 添加字符串到 QString 对象指定位置

QString strInsert("strInsert");

qDebug() << strInsert.insert(1,"1");

qDebug() << strInsert.insert(2,QString("2"));

qDebug() << strInsert.insert(3,QChar('3'));

qDebug() << strInsert.insert(4,QByteArray("4"));

🎯运行结果:

在这里插入图片描述


✨2.6 其他添加、拼接字符串的方式

添加字符串有好几种方式,最常用的是直接使用<code>+运算符,下面给出添加字符串的函数原型:

//将字符串中的每个字符设置为字符ch。如果size与-1(默认值)不同,则事先将字符串大小调整为size。

QString &QString::fill(QChar ch, int size = -1)

// 将字符串设置为指定基数中n的打印值,并返回对该字符串的引用。

// 基数默认为10,取值范围必须在2到36之间。对于非10的基数,n被视为无符号整数。

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)

// 此函数支待的格式定义符和 C廿库中的函数 sprintf()定义的一样。

String &sprintf(const char *format, ...)

// 返回此字符串的副本,其中编号最低的位置标记替换为字符串a,即%1,%2,…, %99。

// fieldWidth指定参数a应占用的最小空间量。如果a所需的空间小于fieldWidth,则使用字符fillChar填充到fieldWidth。一个正的fieldWidth将产生右对齐的文本。负fieldWidth将生成左对齐的文本。

QString arg(const QString &a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const

QString arg(qulonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const

QString arg(long a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const

QString arg(ulong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const

QString arg(int a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const

QString arg(uint a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const

QString arg(short a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const

QString arg(ushort a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const

QString arg(double a, int fieldWidth = 0, char format = 'g', int precision = -1, QChar fillChar = QLatin1Char(' ')) const

QString arg(char a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const

QString arg(QChar a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const

QString arg(qlonglong a, int fieldWidth = 0, int base = 10, QChar fillChar = QLatin1Char(' ')) const

QString arg(QStringView a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const

QString arg(QLatin1String a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const

QString arg(const QString &a1, const QString &a2) const

QString arg(const QString &a1, const QString &a2, const QString &a3) const

QString arg(const QString &a1, const QString &a2, const QString &a3, const QString &a4) const

QString arg(const QString &a1, const QString &a2, const QString &a3, const QString &a4, const QString &a5) const

QString arg(const QString &a1, const QString &a2, const QString &a3, const QString &a4, const QString &a5, const QString &a6) const

QString arg(const QString &a1, const QString &a2, const QString &a3, const QString &a4, const QString &a5, const QString &a6, const QString &a7) const

QString arg(const QString &a1, const QString &a2, const QString &a3, const QString &a4, const QString &a5, const QString &a6, const QString &a7, const QString &a8) const

QString arg(const QString &a1, const QString &a2, const QString &a3, const QString &a4, const QString &a5, const QString &a6, const QString &a7, const QString &a8, const QString &a9) cons

🌰举例子:

QString strOtherAdd("strOtherAdd");

qDebug() << strOtherAdd.fill('z');

qDebug() << strOtherAdd.fill('A', 2);

qDebug(" ");

qDebug() << strOtherAdd.setNum(1);

qDebug() << strOtherAdd.setNum(32,16); // 设置为 32 的十六进制打印值

qDebug() << strOtherAdd.setNum(2.1);

qDebug(" ");

qDebug() << strOtherAdd.sprintf("%s_%d","strOtherAdd", 111);

qDebug(" ");

qDebug() << QString("%1 拼接第三个参数 %3,再拼接第二个参赛 %2").arg("strOtherAdd").arg(2.1).arg(3);

qDebug(" ");

🎯运行结果:

在这里插入图片描述


在这里插入图片描述

🎄三、QString对象的 清空、 删除

本小节介绍从 对象删除一段字符串、清空整个QString对象等操作。

✨3.1 清空字符串

清除字符串的内容并设置为 null,执行这个函数后,调用<code>isNULL()会返回true

void clear()

🌰举例子:

QString strClear("strClear");

strClear.clear();

qDebug() << strClear;// ""

qDebug() << strClear.isNull();// true

qDebug(" ");


✨3.2 从字符串末尾删除字符

void chop(int n)// 从字符串末尾删除n个字符。

QString chopped(int len) const// 返回一个子字符串,其中包含size() - len这个字符串最左边的字符。

🌰举例子:

// 从字符串末尾删除字符

QString strChop("strChop");

strChop.chop(2);

qDebug() << strChop; // strCh

qDebug() << strChop.chopped(1); // strC


✨3.3 删除指定字符串、指定位置的子字符串

相关函数原型如下:

QString &remove(int position, int n)// 从给定的位置索引开始,从字符串中删除n个字符,并返回对字符串的引用。

QString &remove(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive)//删除此字符串中每次出现的字符ch,并返回对该字符串的引用。

QString &remove(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive)

QString &remove(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive)

QString &remove(const QRegExp &rx)

QString &remove(const QRegularExpression &re)

🌰举例子:

QString strClearDel("strClearDel");

qDebug() << strClearDel.remove("Del"); // strClear

qDebug() << strClearDel.remove(0,3); // Clear

qDebug(" ");

✨3.4 删除空白字符

simplified:删除字符串首尾的空白字符,并且将字符串内部的空白字符替换为空格;

trimmed:只删除字符串首尾的空白字符,其他不变。

// 返回一个字符串,该字符串从开始和结束处删除了空白,并将每个内部空白序列替换为单个空格。

// 空白是指QChar::isSpace()返回true的任何字符。这包括ASCII字符“\ t”,' \ n ', ' \ v ', ' \ f ', ' \ r ',和' '。

QString simplified() const

// 删除开始、结束处空白的字符串。

// 空白是指QChar::isSpace()返回true的任何字符。这包括ASCII字符“\ t”,' \ n ', ' \ v ', ' \ f ', ' \ r ',和' '。

QString trimmed() const

🌰举例子:

// 删除空白字符

QString strSpace(" str S pace ");

qDebug() << strSpace.simplified(); // str S pace

qDebug() << strSpace.trimmed(); // str S pace


✨3.5 截断字符串

// 在给定位置索引处截断字符串。

// 如果指定的位置索引超出字符串的末尾,则不会发生任何事情。

void truncate(int position)

🌰举例子:

// 截断字符串

QString strTruncate("strTruncate");

strTruncate.truncate(3);

qDebug() << strTruncate; // str


在这里插入图片描述

🎄四、修改 字符串

✨4.1 修改字符串大小

将字符串的大小设置为size字符。

如果size大于当前大小,则扩展字符串以使其长度为字符长,并将额外的字符添加到末尾。新字符未初始化。

如果size小于当前大小,则从末尾删除字符。

<code>void resize(int size)

void resize(int size, QChar fillChar)

🌰举例子:

QString strResize("strResize");

strResize.resize(6);

qDebug() << strResize; // "strRes"

strResize.resize(16, '*');

qDebug() << strResize; // "strRes**********"


✨4.2 替换掉字符串的字符

将从索引位置开始的n个字符替换为后面的字符串,并返回对该字符串的引用。

注意:如果指定的位置索引在字符串范围内,但position + n超出了字符串范围,则n将被调整为停止在字符串末尾。

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)

QString &replace(const QChar *before, int blen, const QChar *after, int alen, Qt::CaseSensitivity cs = Qt::CaseSensitive)

QString &replace(QLatin1String before, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

QString &replace(QLatin1String before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

QString &replace(const QString &before, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

QString &replace(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

QString &replace(QChar ch, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

QString &replace(QChar c, QLatin1String after, Qt::CaseSensitivity cs = Qt::CaseSensitive)

QString &replace(const QRegExp &rx, const QString &after)

QString &replace(const QRegularExpression &re, const QString &after)

🌰举例子:

// 替换掉字符串的字符

QString strReplace("strReplace");

qDebug() << strReplace.replace(0, 3, "STR"); // "STRReplace"

qDebug() << strReplace.replace(0, 3, '*'); // "*Replace"

qDebug() << strReplace.replace('e', 'E'); // "*REplacE"


✨4.3 交换字符串

// 将字符串other与此字符串交换。这个操作非常快,从不失败。

void swap(QString &other)

🌰举例子:

// 交换字符串

QString strSwap("strSwap");

QString strSwapWhat("strSwapWhat");

strSwap.swap(strSwapWhat);

qDebug() << strSwap;// "strSwapWhat"


✨4.3 字符串格式转换

// 格式转换

CFStringRef toCFString() const

QString toCaseFolded() const

double toDouble(bool *ok = nullptr) const

float toFloat(bool *ok = nullptr) const

QString toHtmlEscaped() const

int toInt(bool *ok = nullptr, int base = 10) const

QByteArray toLatin1() const

QByteArray toLocal8Bit() const

long toLong(bool *ok = nullptr, int base = 10) const

qlonglong toLongLong(bool *ok = nullptr, int base = 10) const

QString toLower() const

NSString *toNSString() const

short toShort(bool *ok = nullptr, int base = 10) const

std::string toStdString() const

std::u16string toStdU16String() const

std::u32string toStdU32String() const

std::wstring toStdWString() 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

QVector<uint> toUcs4() const

QString toUpper() const

QByteArray toUtf8() const

int toWCharArray(wchar_t *array) const


在这里插入图片描述

🎄五、从字符串 查询

✨5.1 查询字符串的字符个数

<code>// 返回此字符串中的字符数。相当于size()。

int length() const

int size() const

🌰举例子:

QString strQuerySize("strQuerySize");

qDebug() << strQuerySize.length();// 12

qDebug() << strQuerySize.size();// 12


✨5.2 查询字符串的一个字符

// 获取字符串中给定位置的字符,position的范围:0 <= position < size()

const QChar at(int position) const

// [] 运算符,返回指定位置的字符

QCharRef operator[](int position)

const QChar operator[](int position) const

const QChar operator[](uint position) const

QCharRef operator[](uint position)

// 返回字符串的最后一个字符,等同于at(size()-1)

QChar back() const

QCharRef back()

// 返回字符串的第一个字符,等同于at(0)

QChar front() const

QCharRef front()

// 返回一个指向存储在QString中的数据的指针。指针可用于访问和修改组成字符串的字符。

QChar *data()

const QChar *data() const

🌰举例子:

// 查询字符串的一个字符

QString strQueryChar("strQueryChar");

qDebug() << strQueryChar.at(1); // t

qDebug() << strQueryChar[2]; // r

qDebug() << strQueryChar.back(); // r

qDebug() << strQueryChar.front(); // s

QChar *pCharArr = strQueryChar.data();

for(int i=0; i<strQueryChar.length(); i++)

{

qDebug() << pCharArr[i];

}

qDebug(" ");

🎯运行结果:

在这里插入图片描述


✨5.3 查询字符串是否为空、是否为大小写

<code>bool isEmpty() const// 如果字符串没有字符则返回true;否则返回false。

bool isLower() const// 如果字符串只包含小写字母则返回true,否则返回false。

bool isNull() const// 如果此字符串为空,则返回true;否则返回false。

bool isRightToLeft() const// 如果从右向左读取字符串,则返回true。

bool isUpper() const// 如果字符串只包含大写字母则返回true,否则返回false。

isEmpty 、isNull的区别:isEmpty是查询除了\0之外,还有没有字符;isNull是只有在没有任何字符时才有true。

🌰举例子:

QString strQueryEmpty("strqueryempty");

qDebug() << "QString(\"\").isEmpty() is " << QString("").isEmpty();

qDebug() << "QString(\"\").isNull() is " << QString("").isNull();

qDebug() << strQueryEmpty.isLower();

qDebug() << strQueryEmpty.isUpper();

🎯运行结果:

在这里插入图片描述


✨5.4 查询是否包含指定的 子字符串

<code>// 如果此字符串包含字符串str,则返回true;否则返回false。

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 QStringRef &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

// 如果字符串以 子字符串s 开头返回true;否则返回false。

bool startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

bool startsWith(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

bool startsWith(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

bool startsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

bool startsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

// 如果字符串以 子字符串s 结尾返回true;否则返回false。

bool endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

bool endsWith(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

bool endsWith(QStringView str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

bool endsWith(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

bool endsWith(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

🌰举例子:

QString strContains("strContains");

qDebug() << strContains.contains("str");

qDebug() << strContains.contains('C');

qDebug() << strContains.startsWith("str");

qDebug() << strContains.startsWith('s');

qDebug() << strContains.endsWith("ins");

qDebug() << strContains.endsWith('s');


✨5.5 查询 子字符串 的位置

// 从 QString 对象查询子字符串的位置并返回,成功的话,返回值为位置,失败返回-1

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 QStringRef &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) const

// 返回字符串str在此字符串中最后出现的索引位置,从索引位置向后搜索。

// 如果from为-1(默认),则从最后一个字符开始搜索;如果from为-2,则在倒数第二个字符处,依此类推。如果没有找到str返回-1。

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 QStringRef &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

🌰举例子:

QString strIndex("strIndexIn");

qDebug() << strIndex.indexOf("Index"); // 3

qDebug() << strIndex.indexOf('I'); // 3

qDebug() << strIndex.indexOf("In", 4); // 8

qDebug() << strIndex.lastIndexOf("Index"); // 3

qDebug() << strIndex.lastIndexOf('I'); // 8

qDebug() << strIndex.lastIndexOf("In"); // 8


✨5.6 查询 子字符串 的出现的个数

// 返回字符串str在此字符串中出现的次数(可能重叠)。

int count(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

int count(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

int count() const

int count(const QStringRef &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const

int count(const QRegExp &rx) const

int count(const QRegularExpression &re) const

🌰举例子:

// 查询 子字符串 的出现的个数

QString strCount("strCountCoCo");

qDebug() << strCount.count("Co");// 3

qDebug() << strCount.count();// 12


✨5.7 获取一个 子字符串

// 返回包含字符串最左边n个字符的子字符串。

QString left(int n) const

QStringRef leftRef(int n) const

QString leftJustified(int width, QChar fill = QLatin1Char(' '), bool truncate = false) const // 返回大小为width的字符串,其中包含由填充字符填充的此字符串。

// 返回一个包含此字符串的n个字符的字符串,从指定的位置索引开始。

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

QStringRef midRef(int position, int n = -1) const

// 返回包含字符串最右n个字符的子字符串。如果n大于等于size()或小于零,则返回整个字符串。

QString right(int n) const

QString rightJustified(int width, QChar fill = QLatin1Char(' '), bool truncate = false) const

QStringRef rightRef(int n) const

// 这个函数返回字符串的一部分。

// 该字符串被视为由字符sep分隔的字段序列。返回的字符串由从位置开始到位置结束(包括位置结束)的字段组成。如果未指定end,则包括从位置开始到字符串末尾的所有字段。字段编号如果从左开始计数为0、1、2等,如果从右到左计数为-1、-2等,。

QString section(QChar sep, int start, int end = ..., QString::SectionFlags flags = SectionDefault) const

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

🌰举例子:

// 获取一个 子字符串

QString strSubString("strSubString");

qDebug() << strSubString.left(6); // strSub

qDebug() << strSubString.leftRef(7); // strSubS

qDebug() << strSubString.leftJustified(15, QChar('*')); // strSubString***

qDebug() << strSubString.mid(6,6); // String

qDebug() << strSubString.midRef(9,3); // ing

qDebug() << strSubString.right(6); // String

qDebug() << strSubString.rightRef(7); // bString

qDebug() << strSubString.rightJustified(15, QChar('*')); // ***strSubString

QString strPath("opt/etc/init.d/tftp/export");

qDebug() << strPath.section('/', 1, 3); // 以 / 为分隔,取第2个到第4个之间的字符串 etc/init.d/tftp

qDebug() << strPath.section('/', -2, -1); // 以 / 为分隔,取倒数第2个到倒数第1个之间的字符串 etc/init.d/tftp

🎯运行结果:

在这里插入图片描述


✨5.8 将字符串分割成多个 子字符串

<code>// 在sep出现的地方将字符串拆分为子字符串,并返回这些字符串的列表。如果sep在字符串中的任何地方都不匹配,split()返回一个包含该字符串的单元素列表。

// Cs指定sep匹配是区分大小写还是不区分大小写。

//如果 behavior 是QString::SkipEmptyParts,空条目不会出现在结果中。缺省情况下,保留空表项。

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) const

// 在sep出现的地方将字符串拆分为子字符串引用,并返回这些字符串的列表。

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 strSplite("opt/etc/init.d/tftp/export");

QStringList strSpliteList = strSplite.split("/");

for(int i=0; i<strSpliteList.size(); i++)

{

qDebug() << strSpliteList[i];

}

qDebug(" ");

🎯运行结果:

在这里插入图片描述


在这里插入图片描述

🎄六、其他

写太多了,几乎翻译了Qt文档里的内容,其他的以后用到再补充吧!!!

<code>// 根据给定版本的Unicode标准,以给定的Unicode规范化模式返回字符串。

QString normalized(QString::NormalizationForm mode, QChar::UnicodeVersion version = QChar::Unicode_Unassigned) const

// 比较s1和s2,如果s1小于、等于或大于s2,则返回一个小于、等于或大于0的整数。

int localeAwareCompare(const QString &other) const

int localeAwareCompare(const QStringRef &other) const

在这里插入图片描述

如果文章有帮助的话,点赞👍、收藏⭐,支持一波,谢谢 😁😁😁



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。