当前位置: 首页 > news >正文

类似建站之星网站不锈钢餐具做外贸哪个网站好

类似建站之星网站,不锈钢餐具做外贸哪个网站好,wordpress分类权限,c 网站做微信支付功能今天接着这篇文章一起深入了解以下QString这个在Qt中最常用的字符串操作类,以及常见的操作方法。 一.QString 的裁剪操作 在 Qt 框架里,QString 类有多种裁剪子字符串的方法。下面介绍一些常用的操作: 截取指定位置和长度的子字符串 可以使…

今天接着这篇文章一起深入了解以下QString这个在Qt中最常用的字符串操作类,以及常见的操作方法。

一.QString 的裁剪操作

在 Qt 框架里,QString 类有多种裁剪子字符串的方法。下面介绍一些常用的操作:

  1. 截取指定位置和长度的子字符串
    可以使用 mid() 或者 left()、right() 方法。
QString str = "Hello, World!";
QString sub1 = str.mid(7, 5);      // 从位置7开始,截取5个字符 -> "World"
QString sub2 = str.left(5);        // 获取左边5个字符 -> "Hello"
QString sub3 = str.right(6);       // 获取右边6个字符 -> "World!"
  1. 基于索引范围裁剪子字符串
    若想截取从某个位置到字符串末尾的子字符串,可把 mid() 的第二个参数留空。
QString str = "Hello, World!";
QString sub = str.mid(7);          // 从位置7到末尾 -> "World!"
  1. 删除开头或结尾的字符
    借助 remove() 方法,能够删除特定位置的字符。
QString str = "   Trim me   ";
str.remove(0, 3);                  // 删除开头的3个字符
str.remove(str.length() - 3, 3);   // 删除结尾的3个字符
// 此时 str 为 "Trim me"
  1. 去除空白字符
    可以使用 trimmed() 或者 simplified() 方法。
QString str = "   Hello   World!   ";
QString trimmed = str.trimmed();   // 移除首尾空白字符 -> "Hello   World!"
QString simplified = str.simplified(); // 移除首尾空白,中间连续空白合并为一个 -> "Hello World!"

二.QString的删除操作

在 Qt 中裁剪特定的字符串可以使用多种方法,以下是几种常见且高效的实现方式

1.使用 QString::remove() 直接删除

QString str = "ABCDEF";
str.remove("EF");  // 结果:"ABCD"

优点:代码简洁,适用于删除固定文本。
缺点:若字符串中存在多个 “EF”,会全部删除(例如 “ABCDEFEF” 会变为 “ABCD”)。

2.使用 QString::replace() 替换为空

QString str = "ABCDEF";
str.replace("EF", "");  // 结果:"ABCD"

效果:与 remove() 相同,但若需要替换特定位置的文本,可结合正则表达式或索引使用。

3.使用 QString::chopped() 从末尾裁剪固定长度

若要删除的字符串位于末尾且长度固定,可使用:

QString str = "ABCDEF";
str.chop(2);  // 结果:"ABCD"(从末尾删除2个字符)

注意:需确保删除的字符串长度已知(如示例中的 “EF” 为 2 个字符)。

4.使用 QString::section() 截取指定部分

若要删除的字符串位于特定位置,可通过分割字符串获取所需部分:

QString str = "ABCDEF";
QString result = str.section("EF", 0, 0);  // 结果:"ABCD"

参数说明:section(分隔符, 起始部分索引, 结束部分索引)。

5.使用正则表达式精确匹配

若需要更灵活的匹配规则(如仅删除末尾的 “EF”):

QString str = "ABCDEF";
str.remove(QRegularExpression("EF$"));  // 结果:"ABCD"(仅删除末尾的"EF")

正则说明:$ 表示字符串末尾,确保只删除末尾的匹配项。

方法性能适用场景
remove()删除固定文本,不关心位置
replace()替换或删除固定文本
chopped()极高删除末尾固定长度的文本
section()中等按分隔符截取特定部分
正则表达式低(相对)需要复杂匹配规则(如位置、格式)

三.QString的拼接操作

在 Qt 框架中,QString 类提供了多种拼接子字符串的方法。以下是一些常用的操作方式:

1. 使用 + 或 += 操作符

这是最直观的字符串拼接方式,类似于 C++ 标准库中的 std::string。

QString str1 = "Hello";
QString str2 = "World";
QString result = str1 + ", " + str2 + "!";  // 结果:"Hello, World!"// 或者使用 += 追加
str1 += ", ";
str1 += str2;
str1 += "!";  // str1 现在为 "Hello, World!"

2. 使用 append() 方法

append() 方法可以在字符串末尾追加另一个字符串、字符或 QChar。

QString str = "Hello";
str.append(", ");
str.append("World");
str.append('!');  // 结果:"Hello, World!"

3. 使用 prepend() 方法

prepend() 方法用于在字符串开头插入另一个字符串,这个方法其实在有些特殊情况下很有用。

QString str = "World!";
str.prepend("Hello, ");  // 结果:"Hello, World!"

4. 使用 insert() 方法

insert() 方法可以在指定位置插入字符串。

QString str = "Hello World!";
str.insert(5, ",");  // 在位置5插入逗号 -> "Hello, World!"

5. 使用 arg() 方法(推荐方式)

arg() 方法用于格式化字符串,更安全且支持多种数据类型。

QString str = QString("%1, %2!").arg("Hello").arg("World");  // 结果:"Hello, World!"// 支持多个参数和不同数据类型
QString formatted = QString("Name: %1, Age: %2").arg("Alice").arg(25);
// 结果:"Name: Alice, Age: 25"

6. 使用 QStringBuilder(高性能拼接)

对于需要高效拼接多个字符串的场景,可以使用 QStringBuilder,通过 % 操作符实现。

#include <QStringBuilder>QString result = QString("Hello") % ", " % "World" % "!";
// 编译器会优化为更高效的拼接方式

四.字符串的分割操作

QString一般在分割时,使用 split() 方法分割字符串时最常用的方式。
split() 作为最常用的分割方法,支持以下参数:

  • 分隔符:可以是单个字符、字符串、正则表达式(QRegularExpression)。
  • 分割选项:控制是否保留空字符串、是否区分大小写等,如:QString::KeepEmptyParts;String::SkipEmptyParts等。

1. 按分隔符分割字符串

QString str = "apple,banana,cherry";
QStringList parts = str.split(',');
QString first = parts[0];          // "apple"
QString second = parts[1];         // "banana"

2. 按字符串分割

QString str = "Hello||World||Qt";
QStringList parts = str.split("||"); // ["Hello", "World", "Qt"]

3. 按正则表达式分割

QString str = "one, two; three-four";
QStringList parts = str.split(QRegularExpression("[,;\\-]")); 
// ["one", " two", " three", "four"]

4. 截取式分割

有时候也可以用截取的思路来分割(其实截取也是分割)。

// 按位置截取式分割QString str = "abcdef";QStringList parts;parts << str.left(3) << str.mid(3);qDebug() << "示例结果 :" << parts;

五.字符串的转换操作

在 Qt 框架中,QString 类提供了丰富的转换方法,可以与其他数据类型或者数据格式(如 std::string、数值类型、字节数组等)相互转换。

1. 转换为 std::string(C++ 标准字符串)

使用 toStdString() 方法将 QString 转换为 std::string。

QString qstr = "Hello World";
std::string stdStr = qstr.toStdString(); // 转换为 std::string

2. 转换为 UTF-8 编码的字节数组(QByteArray)

使用 toUtf8() 方法将字符串转换为 UTF-8 编码的字节数组。

QString qstr = "你好,世界";
QByteArray utf8Data = qstr.toUtf8(); // UTF-8 编码的字节数组

3. 转换为本地编码的字节数组

使用 toLocal8Bit() 方法将字符串转换为本地系统编码的字节数组。

QString qstr = "本地化字符串";
QByteArray localData = qstr.toLocal8Bit(); // 本地编码的字节数组

4. 转换为数值类型(如 int、double 等)

使用 toInt()、toDouble() 等方法将字符串转换为数值类型。转换失败时返回默认值(如 0),可通过引用参数检查转换是否成功。

QString numStr = "123";
int num = numStr.toInt(); // 转换为 int,num = 123QString doubleStr = "3.14";
double d = doubleStr.toDouble(); // 转换为 double,d = 3.14// 检查转换是否成功
bool ok;
int invalidNum = QString("abc").toInt(&ok); // ok = false,invalidNum = 0

5. 从数值类型创建 QString

使用 QString::number() 或静态方法 QString::fromXXX() 创建字符串。

int intValue = 456;
QString intStr = QString::number(intValue); // "456"double doubleValue = 2.718;
QString doubleStr = QString::number(doubleValue, 'f', 2); // "2.72"(保留2位小数)// 直接构造
QString boolStr = QString::fromStdString(true ? "true" : "false"); // "true"

6. 转换为大写或小写

使用 toUpper() 和 toLower() 方法改变字符串大小写。

QString text = "Hello Qt";
QString upper = text.toUpper(); // "HELLO QT"
QString lower = text.toLower(); // "hello qt"

7. 转换为 QUrl(URL 编码)

使用 QUrl::fromUserInput() 将字符串转换为 URL 对象。

QString urlStr = "https://example.com";
QUrl url = QUrl::fromUserInput(urlStr); // 转换为 QUrl 对象

8. 转换为 QDateTime(日期时间)

使用 QDateTime::fromString() 解析字符串为日期时间对象。

QString dateStr = "2023-10-01";
QDateTime dateTime = QDateTime::fromString(dateStr, "yyyy-MM-dd");

9. 从 QByteArray 或 std::string 创建 QString

使用构造函数或静态方法将其他类型转换为 QString。

// 从 QByteArray 创建
QByteArray utf8Data = "UTF-8 数据";
QString qstr1 = QString::fromUtf8(utf8Data);// 从 std::string 创建
std::string stdStr = "标准字符串";
QString qstr2 = QString::fromStdString(stdStr);
http://www.yayakq.cn/news/732800/

相关文章:

  • 网站建设的软文素材巢湖网 网站
  • 哪个网站可以做图片果洛电子商务网站建设
  • 九亭网站建设济南集团网站建设
  • 怎么做网站策划吉林建设厅官方网站
  • 番禺网站建设知乎wordpress 站点语言
  • 怎么做信息发布型网站购物商城类网站备案
  • wordpress如何网站顶部右侧广告专业网站建设效果
  • 网站seo价格济南网站建设方案
  • 网站建设管理工作简述四川住房和城乡建设厅网站不能进入
  • 建站神器爱客影院wordpress
  • 建盏的好坏怎么区分专业网站优化价格
  • 手机访问不了自己做的网站免费推广项目发布平台
  • 人才网站建设标题淘宝网站建设哪个类目
  • 安装网站炎推小说推广下载
  • 怎么看是哪家做的网站怎么建设域名和网站
  • 织梦仿站建站网站建设实战求职seo
  • ps怎么做网站图片库存管理系统软件免费
  • 网站源码下载住房和建设建设局网站
  • 网站大全免费入口奥联网站建设
  • 莱芜做网站号码现在有什么网络游戏好玩
  • 宝盒官方网站wordpress grace7.0
  • 农副产品销售网站开发徐州木塑模板
  • 大学生婚恋网站策划书移动网站建站视频教程
  • 网站网页进口江苏省建设执业资格注册中心网站
  • 2016网站设计规范wordpress中文分词
  • 买域名建网站网络服务费税率是多少
  • 优质国外网站广州人看不起番禺
  • 做网站一排文字怎么水平对齐erp系统软件功能介绍
  • jsp网站开发的优点最全资源搜索引擎
  • ps个人网站设计总结php网站开发中如何