QString的常用操作

QString 是 Qt 中用于处理字符串的类,提供了丰富的功能来操作 Unicode 字符串。以下是 QString 的常用操作及其示例代码。


1. 创建和初始化

示例代码

cpp
复制
QString str1 = "Hello, World!"; // 直接初始化
QString str2("Qt is great!");   // 构造函数初始化
QString str3 = QString::fromUtf8("UTF-8 字符串"); // 从 UTF-8 编码初始化

2. 字符串连接

示例代码

cpp
复制
QString str1 = "Hello";
QString str2 = "World";
QString result = str1 + ", " + str2 + "!"; // 使用 + 连接
qDebug() << result; // 输出: "Hello, World!"

3. 字符串格式化

使用 arg() 格式化

cpp
复制
QString name = "Alice";
int age = 25;
QString message = QString("My name is %1, and I am %2 years old.").arg(name).arg(age);
qDebug() << message; // 输出: "My name is Alice, and I am 25 years old."

4. 字符串查找和替换

查找子字符串

cpp
复制
QString str = "Hello, World!";
int index = str.indexOf("World"); // 查找子字符串的位置
qDebug() << index; // 输出: 7

替换子字符串

cpp
复制
QString str = "Hello, World!";
str.replace("World", "Qt"); // 替换子字符串
qDebug() << str; // 输出: "Hello, Qt!"

5. 字符串分割

使用 split() 分割

cpp
复制
QString str = "apple,banana,orange";
QStringList fruits = str.split(","); // 按逗号分割
for (const QString& fruit : fruits) {
    qDebug() << fruit;
}
// 输出:
// "apple"
// "banana"
// "orange"

6. 字符串大小写转换

转换为大写

cpp
复制
QString str = "Hello, World!";
QString upper = str.toUpper(); // 转换为大写
qDebug() << upper; // 输出: "HELLO, WORLD!"

转换为小写

cpp
复制
QString str = "Hello, World!";
QString lower = str.toLower(); // 转换为小写
qDebug() << lower; // 输出: "hello, world!"

7. 去除空白字符

去除两端空白

cpp
复制
QString str = "  Hello, World!  ";
QString trimmed = str.trimmed(); // 去除两端空白
qDebug() << trimmed; // 输出: "Hello, World!"

去除所有空白

cpp
复制
QString str = "  Hello, World!  ";
QString simplified = str.simplified(); // 去除所有空白
qDebug() << simplified; // 输出: "Hello, World!"

8. 字符串比较

区分大小写比较

cpp
复制
QString str1 = "Hello";
QString str2 = "hello";
bool equal = (str1 == str2); // 区分大小写比较
qDebug() << equal; // 输出: false

不区分大小写比较

cpp
复制
QString str1 = "Hello";
QString str2 = "hello";
bool equal = str1.compare(str2, Qt::CaseInsensitive) == 0; // 不区分大小写比较
qDebug() << equal; // 输出: true

9. 字符串长度和空判断

获取字符串长度

cpp
复制
QString str = "Hello, World!";
int length = str.length(); // 获取字符串长度
qDebug() << length; // 输出: 13

判断字符串是否为空

cpp
复制
QString str;
bool isEmpty = str.isEmpty(); // 判断字符串是否为空
qDebug() << isEmpty; // 输出: true

10. 字符串截取

使用 mid() 截取子字符串

cpp
复制
QString str = "Hello, World!";
QString subStr = str.mid(7, 5); // 从第 7 个字符开始,截取 5 个字符
qDebug() << subStr; // 输出: "World"

使用 left() 和 right() 截取

cpp
复制
QString str = "Hello, World!";
QString left = str.left(5);  // 截取前 5 个字符
QString right = str.right(6); // 截取后 6 个字符
qDebug() << left;  // 输出: "Hello"
qDebug() << right; // 输出: "World!"

11. 字符串转换为数字

转换为整数

cpp
复制
QString str = "123";
int number = str.toInt(); // 转换为整数
qDebug() << number; // 输出: 123

转换为浮点数

cpp
复制
QString str = "3.14";
double number = str.toDouble(); // 转换为浮点数
qDebug() << number; // 输出: 3.14

12. 数字转换为字符串

整数转换为字符串

cpp
复制
int number = 123;
QString str = QString::number(number); // 整数转换为字符串
qDebug() << str; // 输出: "123"

浮点数转换为字符串

cpp
复制
double number = 3.14;
QString str = QString::number(number); // 浮点数转换为字符串
qDebug() << str; // 输出: "3.14"

13. 字符串编码转换

转换为 UTF-8

cpp
复制
QString str = "你好,世界!";
QByteArray utf8 = str.toUtf8(); // 转换为 UTF-8 编码
qDebug() << utf8;

从 UTF-8 转换

cpp
复制
QByteArray utf8 = "你好,世界!";
QString str = QString::fromUtf8(utf8); // 从 UTF-8 编码转换
qDebug() << str;

14. 字符串填充

左填充

cpp
复制
QString str = "123";
QString padded = str.leftJustified(10, '0'); // 左填充到 10 个字符,用 '0' 填充
qDebug() << padded; // 输出: "1230000000"

右填充

cpp
复制
QString str = "123";
QString padded = str.rightJustified(10, '0'); // 右填充到 10 个字符,用 '0' 填充
qDebug() << padded; // 输出: "0000000123"

15. 字符串正则表达式

使用正则表达式匹配

cpp
复制
QString str = "Email: example@example.com";
QRegularExpression regex("(\\w+@\\w+\\.\\w+)");
QRegularExpressionMatch match = regex.match(str);
if (match.hasMatch()) {
    QString email = match.captured(0); // 获取匹配的字符串
    qDebug() << email; // 输出: "example@example.com"
}

总结

QString 提供了丰富的功能来操作 Unicode 字符串,包括创建、连接、格式化、查找、替换、分割、大小写转换、去除空白、比较、截取、转换、编码转换、填充和正则表达式等。掌握这些操作可以极大地提高字符串处理的效率。

posted @   远方是什么样子  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2024-02-26 Windows下破解SecureCRT和SecureFx软件
点击右上角即可分享
微信分享提示