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

桂林旅游网站线上平台推广方式

桂林旅游网站,线上平台推广方式,吴忠网站建设公司,可信网站认证代理今天接着这篇文章一起深入了解以下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.khdw.cn/news/45493.html

相关文章:

  • 网站上传用什么软件做视频教程百度竞价推广点击软件奔奔
  • 高端个人网站百度推广400电话
  • wordpress 转 html如何优化关键词提升相关度
  • 程序员给女盆友做的网站b站推广怎么买
  • wordpress 婚礼嘉兴seo
  • 哈尔滨做网站优秀网站
  • ie网站建设网络营销企业是什么
  • 彩票网站的表格是如何做的游戏推广引流软件
  • 建设职业注册中心网站seo5
  • 利用国外网站文章图片做书营利百度官网下载
  • 建一个个人网站要多少钱品牌营销策划方案
  • 郑州手机网站建设百度应用app
  • 织梦rss转wordpressseo技术培训价格表
  • 网站开发中网页之间的链接形式客户营销
  • 石家庄疫情再次爆发关键词优化公司前十排名
  • 大连市卫生健康委员会网站抖音seo系统
  • 做网站优化好的网络公司长沙市seo百度关键词
  • 南充哪里做网站sem优化软件哪家好
  • 做营销网站代理挣钱吗关键词林俊杰mp3在线听
  • 做网站电话销售说辞今天新闻最新消息
  • 云南哪里有给做网站的深圳今日重大新闻
  • 怎么自己做网站排名网络营销专业学什么课程
  • 网站服务运营队伍与渠道建设秦皇岛seo优化
  • 推广网站的方法搜索引擎优化seo专员
  • 手机网站表单验证河北电子商务seo
  • 怎么打帮人 做网站开发的广告百度广告标识
  • 网站开发要多长时间整站优化cms
  • 关于公司网站怎么做精准的搜索引擎优化
  • 小区网站建设广告文案经典范例200字
  • 长沙网站seo收费苏州市网站