html5国内网站欣赏,国外网站空间购买,保险业网站建设,建e网室内设计图今天接着这篇文章一起深入了解以下QString这个在Qt中最常用的字符串操作类#xff0c;以及常见的操作方法。
一.QString 的裁剪操作
在 Qt 框架里#xff0c;QString 类有多种裁剪子字符串的方法。下面介绍一些常用的操作#xff1a;
截取指定位置和长度的子字符串 可以使…今天接着这篇文章一起深入了解以下QString这个在Qt中最常用的字符串操作类以及常见的操作方法。
一.QString 的裁剪操作
在 Qt 框架里QString 类有多种裁剪子字符串的方法。下面介绍一些常用的操作
截取指定位置和长度的子字符串 可以使用 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!基于索引范围裁剪子字符串 若想截取从某个位置到字符串末尾的子字符串可把 mid() 的第二个参数留空。
QString str Hello, World!;
QString sub str.mid(7); // 从位置7到末尾 - World!删除开头或结尾的字符 借助 remove() 方法能够删除特定位置的字符。
QString str Trim me ;
str.remove(0, 3); // 删除开头的3个字符
str.remove(str.length() - 3, 3); // 删除结尾的3个字符
// 此时 str 为 Trim me去除空白字符 可以使用 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: 256. 使用 QStringBuilder高性能拼接
对于需要高效拼接多个字符串的场景可以使用 QStringBuilder通过 % 操作符实现。
#include QStringBuilderQString result QString(Hello) % , % World % !;
// 编译器会优化为更高效的拼接方式四.字符串的分割操作
QString一般在分割时使用 split() 方法分割字符串时最常用的方式。 split() 作为最常用的分割方法支持以下参数
分隔符可以是单个字符、字符串、正则表达式QRegularExpression。分割选项控制是否保留空字符串、是否区分大小写等如QString::KeepEmptyPartsString::SkipEmptyParts等。
1. 按分隔符分割字符串
QString str apple,banana,cherry;
QStringList parts str.split(,);
QString first parts[0]; // apple
QString second parts[1]; // banana2. 按字符串分割
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::stringC 标准字符串
使用 toStdString() 方法将 QString 转换为 std::string。
QString qstr Hello World;
std::string stdStr qstr.toStdString(); // 转换为 std::string2. 转换为 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(); // 转换为 intnum 123QString doubleStr 3.14;
double d doubleStr.toDouble(); // 转换为 doubled 3.14// 检查转换是否成功
bool ok;
int invalidNum QString(abc).toInt(ok); // ok falseinvalidNum 05. 从数值类型创建 QString
使用 QString::number() 或静态方法 QString::fromXXX() 创建字符串。
int intValue 456;
QString intStr QString::number(intValue); // 456double doubleValue 2.718;
QString doubleStr QString::number(doubleValue, f, 2); // 2.72保留2位小数// 直接构造
QString boolStr QString::fromStdString(true ? true : false); // true6. 转换为大写或小写
使用 toUpper() 和 toLower() 方法改变字符串大小写。
QString text Hello Qt;
QString upper text.toUpper(); // HELLO QT
QString lower text.toLower(); // hello qt7. 转换为 QUrlURL 编码
使用 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);