QString分割字符串详解

一、qstring截取一段字符串

在QString中,可以使用mid方法来截取一段指定长度的字符串。mid方法接收两个参数,第一个参数是待截取的字符串的起始位置,第二个参数是待截取字符串的长度。

QString str = "Hello, World!";
QString newStr = str.mid(7, 5); // 从字符串的第7个字符开始,截取5个字符,newStr的值为"World"

也可以不指定第二个参数,则只截取起始位置之后的所有字符。

QString str = "Hello, World!";
QString newStr = str.mid(7); // 从字符串的第7个字符开始,截取之后的所有字符,newStr的值为"World!"

使用left和right方法可以从字符串的左侧或右侧分别截取指定长度的字符串。left方法从左侧开始截取,接收一个参数指定要截取的字符长度。right方法从右侧开始截取,同样接收一个参数指定要截取的字符长度。

QString str = "Hello, World!";
QString newStr1 = str.left(5); // 从字符串的左侧开始,截取5个字符,newStr1的值为"Hello"
QString newStr2 = str.right(6); // 从字符串的右侧开始,截取6个字符,newStr2的值为"World!"

二、qstring字符串替换

QString中提供了replace方法用于字符串替换。replace方法接收两个参数,第一个参数是被替换的字符串,第二个参数是替换后的字符串。

QString str = "Hello, World!";
str.replace("World", "Mars"); // 将"World"替换成"Mars",str的值变为"Hello, Mars!"

如果需要在替换前先判断一下字符串中是否包含指定的子串,可以使用contains方法。

QString str = "Hello, World!";
if (str.contains("World")) {
    str.replace("World", "Mars");
}

三、qstring分隔符取数据

QString提供了split方法用于根据指定分隔符对字符串进行分割。split方法接收一个参数,即指定的分隔符,返回一个字符串列表,表示分割后得到的所有子串。

QString str = "apple,banana,pear";
QStringList list = str.split(","); // 按","为分隔符分割字符串,list的值为["apple", "banana", "pear"]

split方法还可以接收第二个参数,表示分割后的子串的最大数量。

QString str = "apple,banana,pear";
QStringList list = str.split(",", 2); // 按","为分隔符分割字符串,返回2个子串,list的值为["apple", "banana,pear"]

四、qstring如何截取字符串

除了之前介绍的mid、left和right方法之外,QString还提供了几种截取字符串的方法。

一种是使用remove方法,先删除指定位置及之后的字符,再删除指定位置及之前的字符,即可得到所需的子串。

QString str = "Hello, World!";
str.remove(str.indexOf(','), str.length()); // 删除","及其后的字符
str.remove(0, str.lastIndexOf(' ') + 1); // 删除第一个空格及其前面的字符

另一种是使用section方法,可以方便地从复杂字符串中提取子串。section方法接收三个参数,第一个参数是指定的分隔符,第二个参数是子串的索引(从0开始),第三个参数是标志位,表示截取的方式。

QString str = "China,Beijing,Chaoyang";
QString city = str.section(',', 1, 1); // 返回第2个子串"Beijing"

标志位有三个选项:

  • QString::SectionDefault:默认选项,截取指定索引对应的子串。
  • QString::SectionSkipEmpty:如果截取得到的子串为空,则跳过。
  • QString::SectionIncludeLeadingSep:将分隔符放在截取得到的子串前面。

五、qstring查找字符串

在QString中,可以使用indexOf和lastIndexOf方法查找指定字符串的位置。这两个方法都接收两个参数,第一个参数是待查找的字符串,第二个参数是查找起点的位置。

QString str = "Hello, World!";
int pos1 = str.indexOf("l"); // 查找"l"第一次出现的位置,pos1的值为2
int pos2 = str.lastIndexOf("l"); // 查找"l"最后一次出现的位置,pos2的值为10
int pos3 = str.indexOf("l", pos2 + 1); // 从pos2+1的位置开始查找"l",pos3的值为3

另外,还可以使用count方法查找指定子字符串在当前字符串中出现的次数。

QString str = "Hello, World!";
int count = str.count("l"); // 返回"l"在字符串中出现的次数,count的值为3

六、字符串如何转成qstring

在Qt中经常需要将char*、std::string等其他类型的字符串转换成QString类型,QString提供了fromStdString、fromLocal8Bit和fromUtf8等方法来实现。

char* cstr = "Hello, World!";
QString str1 = QString::fromLocal8Bit(cstr); // 将本地编码的字符串转换成QString
std::string stdstr = "Hello, World!";
QString str2 = QString::fromStdString(stdstr); // 将std::string类型的字符串转换成QString
const char* utf8str = "你好,世界!";
QString str3 = QString::fromUtf8(utf8str); // 将UTF-8编码的字符串转换成QString

七、string字符串分割

在使用string类型的字符串时,可以先将其转换成QString类型,然后使用split方法进行分割。另外,也可以使用stringstream对象进行分割。

#include <sstream>
#include <string>
using namespace std;

string str = "apple,banana,pear";
QString qstr = QString::fromStdString(str);

// 使用split方法进行分割

QStringList list = qstr.split(",");
for (int i = 0; i < list.size(); i++) {
    string s = list[i].toStdString(); // 将QString转换成string类型
    cout << s << endl;
}

// 使用stringstream对象进行分割

stringstream ss(str);
string s;
while (getline(ss, s, ',')) {
    cout << s << endl;
}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/311203.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2025-01-05 13:23
下一篇 2025-01-05 13:23

相关推荐

  • Python字符串宽度不限制怎么打代码

    本文将为大家详细介绍Python字符串宽度不限制时如何打代码的几个方面。 一、保持代码风格的统一 在Python字符串宽度不限制的情况下,我们可以写出很长很长的一行代码。但是,为了…

    编程 2025-04-29
  • Python中将字符串转化为浮点数

    本文将介绍在Python中将字符串转化为浮点数的常用方法。在介绍方法之前,我们先来思考一下这个问题应该如何解决。 一、eval函数 在Python中,最简单、最常用的将字符串转化为…

    编程 2025-04-29
  • Java判断字符串是否存在多个

    本文将从以下几个方面详细阐述如何使用Java判断一个字符串中是否存在多个指定字符: 一、字符串遍历 字符串是Java编程中非常重要的一种数据类型。要判断字符串中是否存在多个指定字符…

    编程 2025-04-29
  • Python学习笔记:去除字符串最后一个字符的方法

    本文将从多个方面详细阐述如何通过Python去除字符串最后一个字符,包括使用切片、pop()、删除、替换等方法来实现。 一、字符串切片 在Python中,可以通过字符串切片的方式来…

    编程 2025-04-29
  • Python如何将字符串1234变成数字1234

    Python作为一种广泛使用的编程语言,对于数字和字符串的处理提供了很多便捷的方式。如何将字符串“1234”转化成数字“1234”呢?下面将从多个方面详细阐述Python如何将字符…

    编程 2025-04-29
  • Python int转二进制字符串

    本文将从以下几个方面对Python中将int类型转换为二进制字符串进行详细阐述: 一、int类型和二进制字符串的定义 在Python中,int类型表示整数,二进制字符串则是由0和1…

    编程 2025-04-29
  • 用title和capitalize美观处理Python字符串

    在Python中,字符串是最常用的数据类型之一。对字符串的美观处理是我们在实际开发中经常需要的任务之一。Python内置了一些方法,如title和capitalize,可以帮助我们…

    编程 2025-04-28
  • Python 提取字符串中的电话号码

    Python 是一种高级的、面向对象的编程语言,它具有简单易学、开发迅速、代码简洁等特点,广泛应用于 Web 开发、数据科学、人工智能等领域。在 Python 中,提取字符串中的电…

    编程 2025-04-28
  • Python如何打印带双引号的字符串

    Python作为一种广泛使用的编程语言,在日常开发中经常需要打印带双引号的字符串。那么,如何打印带双引号的字符串呢? 一、使用转义字符 在Python中,我们可以通过使用转义字符\…

    编程 2025-04-28
  • Python字符串反转函数用法介绍

    本文将从多个方面详细讲解Python字符串反转函数,帮助开发者更好的理解和运用。 一、简介 在Python中,字符串是最基本的数据类型之一。反转字符串,在开发中也是常见的操作之一。…

    编程 2025-04-28

发表回复

登录后才能评论