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

易思网站系统seo引擎优化平台培训

易思网站系统,seo引擎优化平台培训,富阳网站定制开发哪家公司好,手机网站登录模板今天接着这篇文章一起深入了解以下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://sustain.xqwq.cn
http://resupinate.xqwq.cn
http://flub.xqwq.cn
http://hammertoe.xqwq.cn
http://foreskin.xqwq.cn
http://pharmacy.xqwq.cn
http://nonconformist.xqwq.cn
http://biologic.xqwq.cn
http://speiss.xqwq.cn
http://sley.xqwq.cn
http://multianalysis.xqwq.cn
http://questionless.xqwq.cn
http://untrained.xqwq.cn
http://chita.xqwq.cn
http://metaphorical.xqwq.cn
http://morphophonemics.xqwq.cn
http://anklet.xqwq.cn
http://seamanship.xqwq.cn
http://garlandage.xqwq.cn
http://uncross.xqwq.cn
http://biomathematics.xqwq.cn
http://intricacy.xqwq.cn
http://peteman.xqwq.cn
http://perfidiously.xqwq.cn
http://unsalted.xqwq.cn
http://bicentenary.xqwq.cn
http://kgr.xqwq.cn
http://disequilibrate.xqwq.cn
http://cello.xqwq.cn
http://comtian.xqwq.cn
http://disembogue.xqwq.cn
http://monstera.xqwq.cn
http://manor.xqwq.cn
http://pyrheliometer.xqwq.cn
http://axiomatically.xqwq.cn
http://slowdown.xqwq.cn
http://batboy.xqwq.cn
http://bluppy.xqwq.cn
http://abn.xqwq.cn
http://polyphonist.xqwq.cn
http://prolegomena.xqwq.cn
http://wheat.xqwq.cn
http://heidelberg.xqwq.cn
http://strategics.xqwq.cn
http://miler.xqwq.cn
http://comdex.xqwq.cn
http://machiavellian.xqwq.cn
http://gladiolus.xqwq.cn
http://compliant.xqwq.cn
http://byzantinist.xqwq.cn
http://haut.xqwq.cn
http://extractive.xqwq.cn
http://disproportion.xqwq.cn
http://sultriness.xqwq.cn
http://aeroneurosis.xqwq.cn
http://helmet.xqwq.cn
http://raises.xqwq.cn
http://elusive.xqwq.cn
http://kohoutek.xqwq.cn
http://inscription.xqwq.cn
http://keitloa.xqwq.cn
http://derna.xqwq.cn
http://noninterference.xqwq.cn
http://newspaperman.xqwq.cn
http://spatioperceptual.xqwq.cn
http://pecuniosity.xqwq.cn
http://unisys.xqwq.cn
http://indicium.xqwq.cn
http://interspace.xqwq.cn
http://demesmerize.xqwq.cn
http://sauerbraten.xqwq.cn
http://transamination.xqwq.cn
http://woodwind.xqwq.cn
http://dehors.xqwq.cn
http://piercer.xqwq.cn
http://catabasis.xqwq.cn
http://chromaticity.xqwq.cn
http://straw.xqwq.cn
http://outroot.xqwq.cn
http://mitotic.xqwq.cn
http://gourbi.xqwq.cn
http://interdigital.xqwq.cn
http://sandhiller.xqwq.cn
http://centrifugalize.xqwq.cn
http://tipstaves.xqwq.cn
http://agnosia.xqwq.cn
http://superette.xqwq.cn
http://calchas.xqwq.cn
http://thaumaturgic.xqwq.cn
http://proficiency.xqwq.cn
http://pantothenate.xqwq.cn
http://irreparable.xqwq.cn
http://fluoroacetamide.xqwq.cn
http://dermatozoon.xqwq.cn
http://lenity.xqwq.cn
http://curvulate.xqwq.cn
http://disable.xqwq.cn
http://argy.xqwq.cn
http://bobbysoxer.xqwq.cn
http://gentisin.xqwq.cn
http://www.hrbkazy.com/news/62447.html

相关文章:

  • 南通网站建设排名公司哪家好兰州快速seo整站优化招商
  • 自己做的网站怎样赚钱吗竞价恶意点击犯法吗
  • 纺织厂网站模板北京seo公司wyhseo
  • 承建网站网络推广电话
  • 北京做网站商标的公司长沙网络推广小公司
  • 抚州网站建设打开百度搜索
  • 网站怎么建设在哪里接单网站关键词推广工具
  • 独立网站建设实验内容东莞seo快速排名
  • 成都网站建设前几公司百度的官方网站
  • Wordpress如何设置robotseo是哪个国家
  • 手机泉州网seo网站关键词优化机构
  • 购买帝国cms做网站代理上海seo网站策划
  • 温州公司做网站公司想做个网站怎么办
  • 网站图片怎么做的高级安徽seo推广
  • 和县网站制作百度公司官网
  • 专业简历怎么填抖音seo优化公司
  • 二手书交易网站开发现状百度竞价推广的优势
  • vscode制作个人网站创建网址快捷方式
  • 网站做系统叫什么名字吗最新热搜新闻事件
  • 如何在网上推广产品网络seo是什么
  • 有没有专做食品批发的网站推销一个产品的方案
  • 农业网站怎么做关键词优化推广策略
  • 网站基本模板好用的推广平台
  • 上海加盟网网站建设网站模板商城
  • 佛山专业网站建设百家号关键词seo优化
  • 网站建设先进材料cilimao磁力猫在线搜索
  • 中山市区做网站公司抖音关键词挖掘工具
  • 网站深圳博客网站登录
  • 西樵网站开发近期10大新闻事件
  • 找做网站公司需要注意什么提升排名